顺序栈和链栈的初始化插入和删除
来源:互联网 发布:吉林11选5遗漏数据 编辑:程序博客网 时间:2024/06/01 09:08
栈是一种只能在线性表的一端进行插入或删除操作的线性表,它的特点是先进后出(FILO)后进先出(LIFO)。
栈分为顺序栈和链栈,它们的特点分别如下:
顺序栈:用一维数组s[M]来表达,top代表栈顶,当栈是空的,top=-1,当栈是满的top=M-1。
顺序栈的定义:
typedef int ElemType; typedef struct sqstack{ElemType data[maxsize];int top;//栈当前可使用的最大容量}sqstack;进栈:
ElemType push(ElemType x,sqstack *ss){if(ss->top==maxsize-1){printf("overflow\n");return 0;}else{ss->data[++(ss->top)]=x;return 1;}}
出栈:
<pre name="code" class="cpp">ElemType pop(sqstack *ss){if(ss->top<0){printf("underflow\n");return 0;}elsereturn ss->data[ss->top--];}
链栈:
当栈是空的top=NULL,栈是满的top-base=MAXSIZE;
定义:
typedef int datatype;typedef struct linkstack{datatype data;struct linkstack *next;}linkstack;
入栈:
void lsPush(linkstack *LS,int x){linkstack *p;p=new linkstack;p->data=x;p->next=top;top=p;}
出栈:
void lsPop(){linkstack *p;datatype value;if(top==NULL){printf("underflow\n");}else{p=top;value=p->data;top=top->next;delete p;printf("popout %d\n",value);}}
链栈的一个整体代码:
#include<time.h>#include<math.h># include <stdio.h># include <stdlib.h>typedef int datatype;typedef struct linkstack{datatype data;struct linkstack *next;}linkstack;linkstack *top;void lsPush(linkstack *LS,int x){linkstack *p;p=new linkstack;p->data=x;p->next=top;top=p;}void lsPop(){linkstack *p;datatype value;if(top==NULL){printf("underflow\n");}else{p=top;value=p->data;top=top->next;delete p;printf("popout %d\n",value);}}void initLS(linkstack *LS,int n){top=NULL;printf("输入%d个数字,以0结束",n);scanf("%d",&n);while(n!=0){lsPush(LS,n);scanf("%d",&n);}}int main(){linkstack *link;link=new linkstack;initLS(link,8);lsPop();}
0 0
- 顺序栈和链栈的初始化插入和删除
- 顺序栈的初始化,建立,插入,查找,删除
- 顺序栈的初始化,建立,插入,查找,删除
- 顺序栈的初始化,建立,插入,查找,删除
- 最大堆的插入,删除和初始化
- 最大堆的初始化、插入和删除
- (一)顺序表和单链表的初始化、插入、删除等操作
- (三)双向链表的初始化、插入和删除
- 顺序表的初始化、删除、插入
- 顺序表的初始化、插入、删除
- 顺序表的生成、初始化、插入、删除
- 顺序表的初始化、插入、删除
- 链栈的初始化,建立,插入,查找,删除
- 顺序线性表和单链表的插入,删除操作
- 双向链表的初始化,建立,添加节点和删除节点(注意插入和删除要分三种情况)
- 顺序表中的删除和插入
- 顺序队列的初始化,建立,插入,查找,删除
- 顺序串的初始化,建立,插入,查找,删除
- C++标准库bind函数
- [网络流24题] 20 深海机器人 (线性规划网络优化 ,最小费用最大流)
- 磁盘等存储设备及常见问题 浅析
- 20150903 Java学习笔记之继承性
- STL中各个容器的底层数据结构
- 顺序栈和链栈的初始化插入和删除
- Linux下静态库与动态库的使用
- ESXi5.5如何命令行升级到ESXi6.0
- 断舍离——坚持自己的价值选择
- 利用深度优先搜索算法寻找割点
- gperftools分析cpu使用情况
- 二叉树的创建(前序中序创建二叉树、中序后序创建二叉树)
- javascript组件化
- 冒泡排序2.0