代码示例_数据结构_链式栈

链式栈

 


 static.h

 

复制代码
 1 #pragma once
 2 
 3 #include <stdio.h>
 4 #include<stdlib.h>
 5 #include<malloc.h>
 6 
 7 
 8 typedef struct node{
 9     int data;
10     struct node *next;
11 }node;
12 
13 
14 typedef struct stack{
15     node *top;
16     int count;
17 }sta;
18 
19 
20 sta* init_stack(void);
21 int push(sta *s,int input);
22 int pop(sta *s);
复制代码

 

 

 


 

static.c

复制代码
 1 #include "stack.h"
 2 
 3 
 4 // 初始化栈
 5 sta* init_stack(void){
 6     sta *s = (sta*)malloc(sizeof(sta));
 7     if(s==NULL){
 8         perror("malloc failed!");
 9         exit(1);
10     }
11 
12     s->top   = NULL;
13     s->count = 0;
14     return s;
15 }
16 
17 
18 // 入栈
19 int push(sta *s,int input){
20     
21     node *pnew = (node*)malloc(sizeof(node));
22     if(pnew==NULL){
23         perror("malloc failed!");
24         exit(1);
25     }
26 
27     pnew->data = input;
28     pnew->next = s->top;
29     s->top     = pnew;
30 
31     s->count++;
32 
33      printf("input =  %d  入栈成功\n",input);
34 
35 }
36 
37 
38 // 出栈
39 int pop(sta *s){
40 
41     printf("output =  %d  出栈成功\n",s->top->data);
42     node *pnew = s->top;
43     int a = s->top->data;
44     s->top = s->top->next;
45 
46     s->count--;
47     free(pnew);
48 
49     return a;
50 
51 }
复制代码

 

 

 


 

main.c

复制代码
 1 #include "stack.h"
 2 
 3 int main(void)
 4 {
 5     sta *s = init_stack();
 6 
 7     int i = 0;
 8     for(i=0;i<5;i++){
 9 
10         push(s,i);
11 
12     }
13 
14 printf("\n------------------\n\n");
15 
16     for(i=0;i<5;i++){
17 
18         pop(s);
19 
20     }
21 
22 
23     return 0;
24 }
复制代码

 

 

测试:


 

 

 

 

success !

 

posted @   panda_w  阅读(344)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示