码迷,mamicode.com
首页 > 编程语言 > 详细

c语言队列的实现

时间:2018-12-28 20:40:54      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:getchar   ptr   amp   操作   create   getch   出队   链表   queue   

typedef int QElemType;

typedef struct QNode //节点结构
{
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;

typedef struct Link_queue//队列的链表结构
{
QueuePtr front,rear; //队列的头、尾指针
}LinkQueue;


typedef int Status;

#define ERR_OK 0
#define ERR_NO 1

//入队操作
Status Enqueue(LinkQueue* Q,QElemType e)
{
QueuePtr s = (QueuePtr)malloc(sizeof(QNode));

s->data = e;
s->next = NULL;

Q->rear->next = s;   //队列的前一个元素的next指针指向新节点数据
Q->rear = s;      //队列的尾指针向后移动至新节点
return ERR_OK;

}

//出队操作
Status DeQueue(LinkQueue* Q,QElemType *e)
{
QueuePtr p;

p = Q->front->next; //要出队的是头结点的下一个节点
*e = p->data; //将要出队的节点数据赋值给e

Q->front->next = p->next;

if(Q->rear == p) //尾指针指向p说明队列空了
{
Q->rear = Q->front;
}

free(p);
return ERR_OK;
}


void main(void)
{
QueuePtr s = (QueuePtr)malloc(sizeof(QNode));

s->data = 0;
s->next = NULL;

LinkQueue linkqueue;

linkqueue.front = s;
linkqueue.rear = s;

Enqueue(&linkqueue,1);
Enqueue(&linkqueue,2);
Enqueue(&linkqueue,3);
Enqueue(&linkqueue,4);
Enqueue(&linkqueue,5);

QElemType value;
QElemType value1;
QElemType value2;
QElemType value3;

DeQueue(&linkqueue,&value);

DeQueue(&linkqueue,&value1);

DeQueue(&linkqueue,&value2);

DeQueue(&linkqueue,&value3);


//LinkList linklist;

//CreateListTail(&linklist,5);

//ListInsert(&linklist,3,2);

getchar();
}

c语言队列的实现

标签:getchar   ptr   amp   操作   create   getch   出队   链表   queue   

原文地址:https://www.cnblogs.com/zhuzbyin/p/ghst_zby1.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!