栈的链式实现(C语言)
来源:互联网 发布:我的世界java版 编辑:程序博客网 时间:2024/05/01 18:49
栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端称作“栈顶(top)”,不允许插入和删除的另一端叫作“栈底(bottom)”。通常称往栈顶插入元素的操作为“入栈”,称删除栈顶元素的操作为“出栈”。因为后入栈的元素先于先入栈的元素出栈,故被称为是一种“后进先出”的结构,因此又称 LIFO 表(Last In First Out的缩写)。
和线性表类似,栈也有两种存储表示:顺序栈和链栈。下面仅介绍栈的链式存储实现。
栈的定义:
typedef struct node //栈的结点结构{ int data; struct node *next;}L,*Link;typedef struct{ //栈顶作链表的头部 Link top;}S,*Stack;
初始化
Stack init_stack(){ Stack s; s=(Stack )malloc (sizeof(S )); if(s) s->top =NULL; return s;}
入栈
int push_stack(Stack s,int x){ Link p; p=(Link )malloc (sizeof(L)); if(!p) { printf("内存溢出"); return 0; } p->data =x; p->next =s->top ; //将新结点插入到栈顶位置 s->top =p; //栈顶指针指向最新的结点 return 1;}
如上图,在入栈两个结点后,栈顶指针指向最新入栈的结点a2,同时结点a2的指针域指向下一个结点,最先入栈的结点指针域为空。
出栈
int pop_stack(Stack s,int &x){ Link p; if(s->top ==NULL) { printf("栈空"); return 0; } x=s->top ->data ; p=s->top ; s->top=s->top ->next ; //出栈后,栈顶指针指向下一个结点 free(p); return 1;}
销毁栈
void destroy_stack(Stack &s){ Link p,q; if(s) { p=s->top ; while(p) { q=p; p=p->next ; free(q); } free(s); } s=NULL; return;}
1 0
- 栈的链式实现(C语言)
- C语言实现栈(栈的链式实现)
- 用c语言实现的链式栈
- 链式栈的C语言实现
- C语言反向链式栈的实现
- C语言实现的一个链式栈
- 栈的链式存储实现c语言
- 数据结构:栈的链式实现(C语言描述)
- 栈的链式实现(C语言描述)
- C语言实现链式栈
- C语言链式栈和顺序栈的实现
- (C语言)栈的链式实现(数据结构九)
- 用C语言实现栈的链式存储
- C语言链式栈的操作和实现
- 数据结构中链式栈的c语言实现
- 数据结构---C语言栈的链式表示与实现
- 数据结构——队列的链式实现(C语言)
- 线性表的链式存储(单链表)C语言实现
- 中国剩余定理 先发个模版 省的忘了
- Android--触摸屏事件分发--View
- 一款优秀的视频转换工具 – EasyFLV Web Video Encoder
- JS、Jquery父子节点总结(转)
- 使用c++中优先级队列
- 栈的链式实现(C语言)
- 图片的二次采样
- [汇编语言学习笔记][第二章寄存器]
- Fragment
- 串口通信 收发数据
- 【NOIP2015模拟11.3】装饰大楼
- 创建框架链接--frameset的连接方法
- 第8周-项目1(2)
- Java中实现同步的集合