数据结构之栈(C语言实现)
来源:互联网 发布:asp信息录入系统源码 编辑:程序博客网 时间:2024/04/18 16:12
好久没有写C语言了,有些生疏,现在来回味一下。
主要来实现一下动态栈
栈底空元素空用来保存栈底指针,判断栈空,假如没有该空节点,将如法判断是否为栈空。(两个栈顶和栈底都指向第一个元素)
结构体
typedef struct Node{ int data;//数据域 struct Node * PNext;//指针域 } Node, * PNext;typedef struct Stack { PNext top; PNext bottom;}Stack, * PStack;
附上代码
#include<stdio.h> #include<malloc.h> #include<stdbool.h> typedef struct Node{ int data; struct Node * PNext;} Node, * PNext;typedef struct Stack { PNext top; PNext bottom;}Stack, * PStack;void init(PStack PStack){ PStack->bottom = (PNext)malloc(sizeof(Node)); PStack->top = PStack->bottom; PStack->top->PNext = NULL;}void traverse(PStack Ps){ if (Ps->bottom == Ps->top) { printf("栈为空\n"); return; } PNext pt = Ps->top; while (pt != Ps->bottom) { printf("%d ", pt->data); pt = pt->PNext; } printf("\n"); return;}void push(PStack Pstack, int val){ PNext Pnew = (Node *)malloc(sizeof(Node));//生成一个新节点 Pnew->data = val; Pnew->PNext = Pstack->top; Pstack->top = Pnew;}void pop(PStack ps){ if (ps->top == ps->bottom) { printf("栈为空,无法完成出栈操作\n"); return; } PNext temp = ps->top;//引入辅助变量,用于释放内存 ps->top = ps->top->PNext; free(temp); temp = NULL;}void clear(PStack ps){ while (ps->top != ps->bottom) { PNext temp = ps->top; ps->top = ps->top->PNext; free(temp); }}int main(){ Stack stack; init(&stack); push(&stack, 6); push(&stack, 7); push(&stack, 8); traverse(&stack); pop(&stack); traverse(&stack); clear(&stack); traverse(&stack); push(&stack, 7); traverse(&stack); return 0;}
0 0
- 数据结构之栈(C语言实现)
- 数据结构之 栈(C语言实现)
- 数据结构之---C语言实现括号匹配(栈实现)
- 数据结构C语言实现之顺序栈
- 数据结构C语言实现之链栈
- 数据结构之---C语言实现共享栈
- 数据结构之栈的c语言实现
- 数据结构之单链表(C语言实现)
- 数据结构之 队列(C语言实现)
- 数据结构之数组(C语言实现)
- 【数据结构】栈学习之数组实现(C语言)
- 数据结构--顺序栈实现(c语言)
- 数据结构C语言实现栈
- 数据结构.栈(C语言实现)
- 数据结构---栈C语言实现
- 数据结构栈C语言实现
- 【数据结构】数据结构C语言的实现(栈)
- 数据结构(C语言)读书笔记6:栈的应用之括号匹配的C代码实现
- 2013_changsha_onsite
- Android RecyclerView使用完全解析-体验艺术般的控件
- Android 抽奖 GridView 只显示周围一圈的item 纯算法实现
- 关于滚动条的几个参数
- C/C++字符串,字符数组,字符指针及其相互静态拷贝与追加的安全问题解决方案(2)
- 数据结构之栈(C语言实现)
- hdu 2141 Can you find it?(二分)
- Apple公司Darwin流式服务器源代码分析(一)
- DM8168 DVRRDK软件框架研究
- Maven手动添加本地jar包
- HDU 2094 产生冠军(map)
- 全栈工程师之路(二)—— JavaScript(网页前端脚本语言)
- 小波变换基础
- 【OpenCV】访问Mat中每个像素的值(新)