标签: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();
}
标签:getchar ptr amp 操作 create getch 出队 链表 queue
原文地址:https://www.cnblogs.com/zhuzbyin/p/ghst_zby1.html