链式队列的基本操作

复制代码
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 typedef int ElemType;
 4 //结点结构体 
 5 typedef struct node{
 6     ElemType data;
 7     struct node *next; 
 8 }LinkQueueNode;
 9 //头结点的前一个节点
10 typedef struct Node{
11     LinkQueueNode *front;
12     LinkQueueNode *rear; 
13 }LinkQueue;
14 //初始化结点
15 int CreateQueue(LinkQueue *L){
16     LinkQueueNode *phead=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
17     L->front=L->rear=phead;
18     L->front->next=NULL;
19 } 
20 //入队操作
21 int InputQueue(LinkQueue *L){
22     int n,m;
23     LinkQueueNode *pre=L->front;
24     
25     printf("请输入你想入队的长度:");
26     scanf("%d",&n);
27     for(int i=0;i<n;i++){
28         LinkQueueNode *NewNode = (LinkQueueNode*)malloc(sizeof(LinkQueueNode));
29         printf("请输入第%d个数字:",i+1);
30         scanf("%d",&m);
31         NewNode->data=m;
32         NewNode->next=NULL;
33         pre->next=NewNode;
34         L->rear->next=NewNode;//因为这个是动态的所以用rear不用front 
35         L->rear=NewNode;
36         pre=pre->next;
37     }
38 } 
39 //打印队列
40 int OutElem(LinkQueue *L){
41     LinkQueueNode *pre=L->front;
42     LinkQueueNode *p=pre->next;
43     if(pre->next==NULL){
44         return printf("队列中没有元素了!");
45     }
46     while(p->next!=NULL){
47         printf("%d ",p->data);
48         p=p->next;
49     }printf("%d ",p->data);
50     printf("\n");
51     return printf("打印成功!\n");
52 }
53 //出队操作
54 int DeleteLinkQueue(LinkQueue *L){
55     LinkQueueNode *pre=L->front;
56     LinkQueueNode *p=pre->next;
57     pre->next=p->next;//p->next可能是空这种做法不严谨
58      if (L->rear = p)   
59     {
60         L->rear = L->front;
61         printf("置空成功!"); 
62     }
63     free(p);
64     return printf("出队成功!\n");
65 } 
66 int main(){
67     LinkQueue L;
68     CreateQueue(&L);
69     InputQueue(&L);
70     OutElem(&L);
71     DeleteLinkQueue(&L);
72     OutElem(&L);
73 }
复制代码

 

posted on   18软工五班龙向昆  阅读(171)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示