当前位置:   article > 正文

链队列——入队出队(C++)_c语言如何创建链队

c语言如何创建链队
  1. #include<stdio.h>  
  2. #include<stdlib.h>  
  3. typedef struct Lnode  
  4. {  
  5.     int data;  
  6.     struct Lnode *next;  
  7. }LinkList;  
  8.   
  9. typedef struct  
  10. {  
  11.     LinkList *front;  
  12.     LinkList *rear;  
  13. }LinkQueue;  
  14.   
  15. int InQueue(LinkQueue *LQ)  
  16. {  
  17.     LinkList *p=(LinkList*)malloc(sizeof(LinkList));  
  18.     if(p==NULL)  
  19.     {  
  20.         printf("初始化失败!\n");  
  21.         return 0;  
  22.     }  
  23.     p->next=NULL;  
  24.     LQ->front=LQ->rear=p;  
  25.     return 1;  
  26. }  
  27.   
  28. int EmptyQueue(LinkQueue *LQ)  
  29. {  
  30.     if(LQ->front==LQ->rear)  
  31.     {  
  32.         printf("队列空!\n");  
  33.         return 1;  
  34.     }  
  35.     return 0;  
  36. }  
  37.   
  38. int EnQueue(LinkQueue *LQ, int x)  
  39. {  
  40.     LinkList *s=(LinkList *)malloc(sizeof(LinkList));  
  41.     if(s==NULL)  
  42.     {  
  43.         printf("分配空间失败!\n");  
  44.         return 0;  
  45.     }  
  46.     s->data=x;  
  47.     s->next=NULL;  
  48.     LQ->rear->next=s;  
  49.     LQ->rear=s;  
  50.     return 1;  
  51. }  
  52.   
  53. int GetFront(LinkQueue *LQ, int *x)  
  54. {  
  55.     if(EmptyQueue(LQ))  
  56.     {  
  57.         printf("队空!\n");  
  58.         return 0;  
  59.     }  
  60.     *x=LQ->front->next->data;  
  61.     return 1;  
  62. }  
  63.   
  64. int OutQueue(LinkQueue *LQ, int *x)  
  65. {  
  66.     LinkList *p;  
  67.     if(EmptyQueue(LQ))  
  68.     {  
  69.         printf("队空!\n");  
  70.         return 0;  
  71.     }  
  72.     p=LQ->front->next;  
  73.     *x=p->data;  
  74.     LQ->front->next=p->next;  
  75.     if(LQ->front->next==NULL)  
  76.     {  
  77.         LQ->rear=LQ->front;  
  78.     }  
  79.     free(p);  
  80.     return 1;  
  81. }  
  82.   
  83. int main()  
  84. {  
  85.     LinkQueue *Q;  
  86.     Q=(LinkQueue *)malloc(sizeof(LinkQueue));  
  87.     LinkList *p;  
  88.     int n,m,x,fx;  
  89.     InQueue(Q);  
  90.     printf("请输入入队元素个数n:\n");  
  91.     scanf("%d",&n);  
  92. printf("请输入入队元素:\n");
  93.     for(int i=1; i<=n; i++)  
  94.      {  
  95. scanf("%d",&m);
  96.         EnQueue(Q, m);  
  97.      }  
  98.   
  99.     GetFront(Q, &fx);  
  100.     printf("队首元素:%d\n", fx);  
  101.   
  102.     printf("输出队列元素:\n");  
  103.     for(p=Q->front->next; p!=NULL; p=p->next)  
  104.      {  
  105.         printf("%3d", p->data);  
  106.      }  
  107.     for(int i=1; i<=n; i++)  
  108.      {  
  109.         OutQueue(Q, &x);  
  110.         printf("\n出队元素:%d\n", x);  
  111.      }  
  112.   
  113.     system("pause");  
  114.     return 0;  
  115. }

运行结果:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/706976
推荐阅读
相关标签
  

闽ICP备14008679号