Nhap Xuat Them Xoa Hang Doi
Written By 1 on Chủ Nhật, 20 tháng 5, 2012 | 08:45
// HangDoi.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
struct Queue
{
int info;
struct Queue *next;
};
typedef struct Queue *QUEUE;
//Khai Bao Prototype
void InitializeQ (QUEUE *pfirst, QUEUE *plast);
int EmptyQ (QUEUE *pfirst);
QUEUE GetQueue();
void PushQ (QUEUE *pfirst, QUEUE *plast, int x);
int PopQ (QUEUE *pfirst, QUEUE *plast);
void TopQ (QUEUE *pfirst);
//==============================
void main()
{
QUEUE pfirst, plast;
int x, y, vt, chon, n, i;
char ch;
InitializeQ (&pfirst, &plast);
do
{
printf("\n\n\t CHUONG TRINH DEMO HANG DOI THAO TAC TREN DAY NGUYEN !");
printf("\n\t1 : Khoi Tao Hang Doi !");
printf("\n\t2 : Kiem Tra Hang Doi Rong !");
printf("\n\t3 : Tao Hang Doi !");
printf("\n\t4 : Xuat Va Huy Hang Hoi !");
printf("\n\t5 : Them 1 Phan Tu Vao Hang Doi !");
printf("\n\t6 : Xoa 1 PTu Ra Khoi hang Doi !");
printf("\n\t7 : Truy Xuat Noi Dung O Dinh Hang Doi !");
printf("\n\t0 : THOAT KHOI CHUONG TRINH !");
printf("\n\tBan Chon Chuc Nang Nao ? ");
scanf ("%d", &chon);
switch (chon)
{
case 1:
{
InitializeQ (&pfirst, &plast);
printf("\n\t Hang Doi Da Duoc Khoi Tao !");
getch();
break;
}
case 2:
{
printf("\n\t Kiem Tra Hang Doi Rong !");
if (EmptyQ (&pfirst))
printf("\n\t Hang Doi Rong !");
else
printf("\n\t Hang Doi Khong Rong !");
getch();
break;
}
case 3:
{
printf("\n\t Tao Hang Doi !");
InitializeQ (&pfirst, &plast);
printf("\n\t Nhap SPTu Trong Hang Doi !");
scanf ("%d", &n);
printf("\n\t Tao Hang Doi !");
for (i = 1; i <= n; i++)
{
printf("\t\t\n Nhap PTu Thu %d : ", i);
scanf("%d", &x);
//Neu La Cau Truc : x = Nhap1PTu();
PushQ(&pfirst, &plast, x);
}
getch();
break;
}
case 4:
{
printf("\n\t Xuat Va Huy Hang Doi !");
if (EmptyQ (&pfirst))
printf("\n\t Hang Doi Rong !");
else
{
printf("\n\t Noi Dung Hang Doi Vua Nhap !");
while(EmptyQ (&pfirst) == 0)
{
TopQ (&pfirst);
y = PopQ (&pfirst, &plast);
}
}
getch();
break;
}
case 5:
{
printf("\n\t Them 1 PTu Vao Hang Doi !");
printf("\n\t Nhap Noi Dung X Can Them : ");
scanf ("%d", &x);
PushQ(&pfirst, &plast, x);
getch();
break;
}
case 6:
{
printf("\n\t Xoa PTu Dinh !");
y = PopQ (&pfirst, &plast);
getch();
break;
}
case 7:
{
printf("\n\t Truy Xuat Noi Dung PTu Dinh !");
TopQ (&pfirst);
getch();
break;
}
}//KT Switch
}while (chon > 0);
getch();
}//KThuc Ham Main
//==============================
//Cai Dat Cac Prototype
//======================================
void InitializeQ (QUEUE *pfirst, QUEUE *plast)
{
*pfirst = *plast = NULL;
}
//========================================
int EmptyQ (QUEUE *pfirst)
{
if (*pfirst == NULL)
return 1; //Rong
return 0; //Khong Rong
}
//========================================
QUEUE Getnode()//Cap Phat Vung Nho
{
QUEUE p;
p = (QUEUE) malloc (sizeof (struct Queue));
p -> next = NULL;
return p;
}
//========================================
int PopQ (QUEUE *pfirst, QUEUE *plast)
{
QUEUE p;
int x;
if (EmptyQ(pfirst))
printf("\n\t DS Rong, Khong Xoa Duoc !");
else
{
p = *pfirst;
x = p -> info;
if (p -> next == NULL) //DS Co 1 Phan Tu
*pfirst = *plast = NULL;
else
*pfirst = p -> next;
return x;
}
}
//========================================
void PushQ (QUEUE *pfirst, QUEUE *plast, int x)
{
QUEUE p;
p = Getnode();
p -> info = x;
p -> next = NULL;
if (EmptyQ (pfirst))
{
*pfirst = p;
*plast = *pfirst;
}
else
{
(*plast) -> next = p;
*plast = p;
}
}
//========================================
void TopQ (QUEUE *pfirst)
{
if (EmptyQ (pfirst))
printf("\n\t Hang Doi Rong !");
else
{
printf("%5d", (*pfirst) -> info);
//Neu La Cau Truc In1PTu
}
}
0 nhận xét:
Đăng nhận xét