数据结构之__栈

代码非常简单,直接代码stackg.h

复制代码
 1 #ifndef stackg_h
 2 #define stackg_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 push(List *, DataType);
22 void pop(List *);
23 Node *getTop(List *);
24 int getLength(List *);
25 void dispList(List *);
26 
27 #endif
复制代码

对应的实现文件stackg.c

复制代码
 1 #include "stackg.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 push(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->tail = node;
20     }else{
21         node->next = list->head;
22     //3、插入节点
23     }
24     list->head = node;
25 
26     return;
27 }
28 
29 void pop(List *list){
30     list->head = list->head->next;
31 
32     return;
33 }
34 
35 Node *getTop(List *list){
36     Node *node = (Node *)malloc(sizeof(Node));
37     node = list->head;
38 
39     return node;;
40 }
41 
42 int getLength(List *list){
43     Node *node = (Node*)malloc(sizeof(Node));
44     node = list->head;
45     int i = 0;
46     while(node != NULL){
47         node = node->next;
48         i++;
49     }
50 
51     return i;
52 }
53 
54 void dispList(List *list){
55     Node *node = (Node *)malloc(sizeof(Node));
56     node = list->head;
57     int i = 0;
58     while(node != NULL){
59         printf("the %dth node: %d\n", i + 1, node->data);
60         node = node->next;
61         i++;
62     }
63     printf("display finished\n");
64 
65     return;
66 }
复制代码

测试文件testStackg.c

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

直接运行即可,win10下linux子系统ubuntu18.04

posted @   叕叒双又  阅读(166)  评论(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编程基础之一:关键字
点击右上角即可分享
微信分享提示