链队列的表示与实现

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct node{
 int data;
 struct node *next;
}QNode,*queueptr;
typedef struct{
 queueptr front;
 queueptr rear;
}Linkqueue;
int InitQueue(Linkqueue *Q)
{
 Q->front = Q->rear = (queueptr)malloc(sizeof(QNode));
 if(!Q->front) return 0;
 Q->front->next = NULL;
 return 1;
}
int EnQueue(Linkqueue *Q,int e)
{
 QNode* p = (QNode *)malloc(sizeof(QNode));
 if(!p) return 0;
 p->data = e;
 p->next = NULL;
 Q->rear->next = p;
 Q->rear = p;
 return 1;
}
int DeQueue(Linkqueue *Q,int *e)
{
 
 if(Q->front == Q->rear)
 {
  return 0;
 }
 QNode* p = Q->front->next;
 *e = p->data;
 Q->front->next = p->next;
 if(Q->rear == p) Q->rear = Q->front;
 free(p);
 return 1;
}
void DestoryQueue(Linkqueue *Q)
{
 while(Q->front)
 {
  Q->rear = Q->front->next;
  free(Q->front);
  Q->front = Q->rear;
 }
}
int main(void)
{
 Linkqueue q;
 printf("初始化链队\n");
 int i,x;
 InitQueue(&q);
 printf("初始化链队成功!\n");
 printf("请输入入链队的数据!\n");
 for(i = 1;i <= 3;i++)
 {
  scanf("%d",&x);
  EnQueue(&q,x);
 }
 printf("入链队成功!");
 printf("以下为出栈数据!\n");
 for(i = 1;i <= 3;i++)
 {
  DeQueue(&q,&x);
  printf("%-4d",x);
 }
 printf("\n");
 printf("END!\n");
 return 0;
}
发布了265 篇原创文章 · 获赞 66 · 访问量 1万+
App 阅读领勋章
微信扫码 下载APP
阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览