数据结构——链式栈
采用链式存储的方式构建栈
#include<bits/stdc++.h> using namespace std; #define ElementType int typedef struct LinkNode{ ElementType data; struct LinkNode *next; } *LiStack; bool InitStack(LiStack &S){ S = (LinkNode *)malloc(sizeof(LinkNode)); if(S == NULL){ printf("Init Stack Failed!\n"); return false; } S->next = NULL; return true; } bool Push(LiStack &S,ElementType x){ LinkNode *p = S; while(p->next!=NULL){ p=p->next; } p->next = (LinkNode *)malloc(sizeof(LinkNode)); if(p->next == NULL){ printf("Push Failed!\n"); return false; } p->next->data = x; p->next->next = NULL; return true; } bool IsEmpty(LiStack &S){ return S->next == NULL; } bool Pop(LiStack &S){ if(IsEmpty(S)){ printf("Stack is Empty"); return false; } LinkNode *p=S; while(p->next->next!=NULL){ p = p->next; } free(p->next); p->next = NULL; return true; } bool GetTop(LiStack &S,ElementType &x){ if(IsEmpty(S)){ printf("Stack is Empty"); return false; } LinkNode *p = S; while(p->next!=NULL){ p=p->next; } x = p->data; return true; } bool print(LiStack &S){ if(IsEmpty(S)){ printf("Stack is Empty"); return false; } LinkNode *p = S; while(p->next!=NULL){ p = p->next; printf("%d\n",p->data); } return true; } void test(){ LiStack S; InitStack(S); Push(S,1); Push(S,2); Push(S,3); Push(S,4); Pop(S); int x; GetTop(S,x); print(S); printf("取出一个数据为:%d",x); } int main() { test(); return 0; }
合集:
数据结构
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)