数据结构之__队列

老样子,代码就是一切,首先queueg.h

复制代码
 1 #ifndef queueg_h
 2 #define queueg_h
 3 
 4 #include <stdio.h>
 5 #include <stdlib.h>
 6 
 7 typedef int DataType;
 8 
 9 typedef struct node_{
10     DataType data;
11     struct node_ *next;
12 } Node;
13 
14 typedef struct list_{
15     Node *head;
16     Node *tail;
17     Node *current;
18 } List;
19 
20 void initList(List *);
21 void inQueue(List *, DataType);
22 void outQueue(List *);
23 Node *frontQueue(List *);
24 int getLength(List *);
25 void dispList(List *);
26 
27 #endif
复制代码

接着queueg.c

复制代码
 1 #include "queueg.h"
 2 
 3 void initList(List *list){
 4     list->head = NULL;
 5     list->tail = NULL;
 6     list->current = NULL;
 7 
 8     return;
 9 }
10 
11 void inQueue(List *list, DataType data){
12     //1、创建一个节点
13     Node *node = (Node *)malloc(sizeof(Node));
14     node->data = data;
15     node->next = NULL;
16 
17     //2、插入节点准备
18     if(list->head == NULL){
19         list->head = node;
20     }else{
21         //node->next = list->head;
22         list->tail->next = node;
23     //3、插入节点
24     }
25     list->tail = node;
26 
27     return;
28 }
29 
30 void outQueue(List *list){
31     list->head = list->head->next;
32 
33     return;
34 }
35 
36 Node *frontQueue(List *list){
37     Node *node = (Node *)malloc(sizeof(Node));
38     node = list->head;
39 
40     return node;;
41 }
42 
43 int getLength(List *list){
44     Node *node = (Node*)malloc(sizeof(Node));
45     node = list->head;
46     int i = 0;
47     while(node != NULL){
48         node = node->next;
49         i++;
50     }
51 
52     return i;
53 }
54 
55 void dispList(List *list){
56     Node *node = (Node *)malloc(sizeof(Node));
57     node = list->head;
58     int i = 0;
59     while(node != NULL){
60         printf("the %dth node: %d\n", i + 1, node->data);
61         node = node->next;
62         i++;
63     }
64     printf("display finished\n");
65 
66     return;
67 }
复制代码

最后,测试代码testQueue.c

复制代码
 1 #include "queueg.h"
 2 
 3 int main(int argc, char **argv)
 4 {
 5     List *list = (List *)malloc(sizeof(List));
 6     initList(list);
 7     inQueue(list, 4);
 8     inQueue(list, 6);
 9     inQueue(list, 8);
10     inQueue(list, 10);
11     dispList(list);
12     Node *tmp = frontQueue(list);
13     printf("getTop result: %d\n", tmp->data);
14     outQueue(list);
15     dispList(list);
16     outQueue(list);
17     dispList(list);
18     printf("the list: %d\n", getLength(list));
19 
20     return 0;
21 }
复制代码

整体还是比较简单,主要是便于学生从表的角度看待栈和队列了

posted @   叕叒双又  阅读(143)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2019-11-02 python3编程基础之一:操作
2019-11-02 python3编程基础之一:量的表示
2019-11-02 python3编程基础之一:标识符
2019-11-02 python3编程基础之一:关键字
点击右上角即可分享
微信分享提示