- #include<stdio.h>
- #include<stdlib.h>
- typedef int elem;
- //基本链表
- struct queue
- {
- elem data;
- struct queue *next;
- };
- typedef struct queue node;
- typedef node *pqueue;
- //头尾指针
- struct squeue
- {
- pqueue front;
- pqueue rear;
- };
- typedef struct squeue pnode;
- typedef pnode *ppqueue;
- //入队列
- void enqueue(ppqueue q,elem e)
- {
- pqueue newnode;
- newnode = (pqueue)malloc(sizeof(node));
- if(!newnode){
- printf("分配内存失败");
- exit(-1);
- }
- newnode->data = e;
- newnode->next = NULL;
- if(!q->rear)
- {
- q->front = newnode;
- }else{
- q->rear->next = newnode;
- }
- q->rear = newnode;
- }
- // 出队列
- elem dequeue(ppqueue q)
- {
- pqueue p;
- elem e;
- e = -1;
- if(!q->front)
- {
- printf("队列为空");
- exit(-1);
- }
- p = q->front;
- e = p->data;
- q->front = p->next;
- free(p);
- return e;
- }
- //打印队列
- void print_queue(ppqueue q)
- {
- pqueue p;
- p = q->front;
- while(p != q->rear)
- {
- printf("%d#",p->data);
- p = p->next;
- }
- printf("\\n");
- }
- int main()
- {
- //初始化队列
- ppqueue p;
- p = (ppqueue)malloc(sizeof(pnode));
- p->front = NULL;
- p->rear = NULL;
- int i;
- for(i=1;i<10;i++){
- enqueue(p,i);
- }
- print_queue(p);
- printf("\\ndequeue:%d\\n",dequeue(p));
- print_queue(p);
- return 1;
- }
- //该片段来自于http://www.codesnippet.cn/detail/2210201410761.html
来源: http://www.codesnippet.cn/detail/2210201410761.html