链栈的相关操作
1 /* 2 2012年11月23日9:10:12 3 链栈的基本操作 4 InitStack 初始化链栈 5 */ 6 7 8 #include<stdio.h> 9 #include<stdlib.h> 10 11 12 13 //////////定义结构体////////////////// 14 typedef struct Node 15 { 16 struct Node *pNext; 17 int data; 18 }NODE,*PNODE; 19 20 typedef struct Stack 21 { 22 PNODE pTop; 23 int count; 24 }LinkStack,*PLinkStack; 25 26 27 28 ////////////函数声明////////////////////// 29 void InitStack(PLinkStack); 30 void Push(int val,PLinkStack pS); 31 void Traverse(PLinkStack pS); 32 void Pop(PLinkStack pS); 33 34 35 /////////////主函数/////////////////// 36 int main(void) 37 { 38 LinkStack S; 39 InitStack(&S); 40 Push(3,&S); 41 Push(2,&S); 42 Push(4,&S); 43 Push(5,&S); 44 Traverse(&S); 45 Pop(&S); 46 Traverse(&S); 47 return 0; 48 } 49 50 51 52 ///////////初始化链栈////////////////// 53 void InitStack(PLinkStack pS) 54 { 55 56 pS->pTop = (PNODE)malloc(sizeof(NODE)); 57 if(NULL == pS->pTop) 58 { 59 printf("分配内存失败\n"); 60 exit(-1); 61 } 62 else 63 { 64 pS->pTop->pNext = NULL; 65 pS->count = 0; 66 } 67 } 68 69 70 71 ////////////入栈/////////////// 72 void Push(int val,PLinkStack pS) 73 { 74 PNODE pNew; 75 pNew = (PNODE)malloc(sizeof(NODE)); 76 if(NULL == pNew) 77 { 78 printf("分配内存失败\n"); 79 exit(-1); 80 } 81 else 82 { 83 pNew->data= val; 84 pNew->pNext = pS->pTop; 85 pS->pTop = pNew; 86 pS->count++; 87 } 88 } 89 90 91 ///////////遍历输出//////////////// 92 void Traverse(PLinkStack pS) 93 { 94 PNODE pTemp = pS->pTop; 95 if(NULL == pTemp->pNext) 96 { 97 printf("空栈!\n"); 98 } 99 else 100 { 101 while(NULL!=pTemp->pNext) 102 { 103 printf("%d\n",pTemp->data); 104 pTemp = pTemp->pNext; 105 } 106 } 107 return; 108 } 109 110 111 ////////////出栈//////////////////// 112 void Pop(PLinkStack pS) 113 { 114 PNODE pTemp = pS->pTop; 115 if(NULL == pTemp->pNext) 116 { 117 printf("空栈!\n"); 118 } 119 else 120 { 121 printf("出栈元素为%d\n",pTemp->data); 122 pS->pTop = pS->pTop->pNext; 123 free(pTemp); 124 pS->count--; 125 126 } 127 128 129 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!