c语言定义链式队列用菜单,数据结构之---C语言实现链式队列
//鏈?zhǔn)疥?duì)列的存儲(chǔ)
//楊鑫
#include
#include
typedef int QElemType;
//定義節(jié)點(diǎn)
typedef struct QNode
{
QElemType data;
struct QNode *next;
}QNode, *QueuePtr;
//定義指針
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
//插入元素e進(jìn)入隊(duì)列
void en_Queue(LinkQueue *q, QElemType e)
{
QueuePtr temp = (QueuePtr)malloc(sizeof(QNode));
if(temp)
{
temp->data = e;
temp->next = NULL;
q->rear->next = temp;
q->rear = temp;
}
}
//初始化隊(duì)列
void init_Queue(LinkQueue *q)
{
q->front = q->rear = (QNode *)malloc(sizeof(QNode));
q->front->next = NULL;
}
//創(chuàng)建隊(duì)列
void create_Queue(LinkQueue *q)
{
int n = 0;
init_Queue(q);
printf("請(qǐng)輸入要進(jìn)入隊(duì)列的元素,以0結(jié)束!\n");
while(scanf("%d", &n))
{
if(n == 0)
break;
en_Queue(q, n);
}
}
//e元素出隊(duì)
void de_Queue(LinkQueue *q, QElemType *e)
{
if(q->front == q->rear)
return;
QueuePtr temp = q->front->next;
if(q->front->next == q->rear)
q->rear = q->front;
*e = temp->data;
q->front->next = temp->next;
free(temp);
}
//判斷隊(duì)列是否為空
int is_Empty(LinkQueue *q)
{
if(q->front == q->rear)
return 1;
return 0;
}
//返回隊(duì)列
int getlength_Queue(LinkQueue *q)
{
QueuePtr temp = q->front;
int i = 0;
while(temp != q->rear)
{
++i;
temp = temp->next;
}
return i;
}
//清空隊(duì)列
void clear(LinkQueue *q)
{
QueuePtr temp = q->front->next;
while(temp)
{
QueuePtr tp = temp;
temp = temp->next;
free(tp);
}
temp = q->front;
q->front = q->rear = NULL;
free(temp);
}
//打印隊(duì)列元素
void print_Queue(LinkQueue *q)
{
if(q->front == q->rear)
return;
QueuePtr temp = q->front->next;
while(temp != q->rear)
{
printf("%d ", temp->data);
temp = temp->next;
}
printf("%d", temp->data);
printf("\n");
}
//第一個(gè)數(shù)據(jù)出隊(duì)
void top_Queue(LinkQueue *q, QElemType *e)
{
if(q->front == q->rear)
return;
*e = q->front->next->data;
}
int main()
{
int i = 0, k = 0, top = 0;
int len;
LinkQueue q;
create_Queue(&q);
top_Queue(&q, &top);
printf("隊(duì)頭的元素為:%d\n", top);
len = getlength_Queue(&q);
printf("遍歷隊(duì)中的所有元素:\n");
for(i = 0; i < len; i++)
{
de_Queue(&q, &k);
printf("%d ", k);
}
printf("\n");
clear(&q);
return 0;
}
總結(jié)
以上是生活随笔為你收集整理的c语言定义链式队列用菜单,数据结构之---C语言实现链式队列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言程序会使cpu变高,用 C 语言写
- 下一篇: 用函数求C15的值C语言,南开19春学期