顺序栈和链栈的实现
来源:互联网 发布:淘宝预售订单怎么取消 编辑:程序博客网 时间:2024/05/22 15:27
之前又一次现场笔试,当时直接懵逼了,发现自己之前看书,完全没注意这些,整个过程尴尬,后面决定好好把这些数据结构的基础实现完成一遍
栈的实现有三种,顺序存储链式存储还有共享栈
一、链式存储
#include <iostream>#include<string>#include <vector>using namespace std;//链栈的实现typedef struct ListNode{int val;ListNode* next;}ListNode;typedef struct ListStack{ ListNode* top; int count;}ListStack;void push1(ListStack* s,int num){ ListNode* p=new ListNode; p->val=num; p->next=s->top; s->top=p; s->count++;}int pop1(ListStack*s){ if(s->count==0) return -1; int num; num=s->top->val; ListNode* p=s->top; s->top=s->top->next; delete p; return num;}int main(){ ListStack* lstack=new ListStack; lstack->count=0; lstack->top=NULL; push1(lstack,1); push1(lstack,2); int num1=pop1(lstack); int num2=pop1(lstack); cout<<num1<<" "<<num2<<endl; return 0;}
二、顺序存储
#include <iostream>#include<string>#include <vector>using namespace std;#define maxsize 100//顺序栈的实现typedef struct ArrStack{ int data[maxsize]; int top;}ArrStack;void push(ArrStack*s,int num){ if(s->top==maxsize-1) return; s->top++; s->data[s->top]=num;}int pop(ArrStack*s){ if(s->top==-1) return -1; int num=s->data[s->top]; s->top--; return num;}int main(){ ArrStack* s=new ArrStack; s->top=0; push(s,1); push(s,2); cout<<pop(s)<<endl; cout<<pop(s)<<endl; return 0;}三、两栈共享内存
#include <iostream>#include<string>#include <vector>using namespace std;#define maxsize 100//顺序栈的实现typedef struct ArrStack{ int data[maxsize]; int top1; int top2;}ArrStack;void push(ArrStack*s,int num,int stacknum){ if(s->top1+1==s->top2) return; if(stacknum==1) s->data[++s->top1]=num; else if(stacknum==2) s->data[--s->top2]=num;}int pop(ArrStack*s,int stacknum){int num;if(stacknum==1){ if(s->top1==-1) return -1; num=s->data[s->top1--];} if(stacknum==2){ if(s->top2==maxsize) return -1; num=s->data[s->top2++];} return num;}int main(){ ArrStack* s=new ArrStack; s->top1=0; s->top2=maxsize-1; push(s,1,1); push(s,2,1); push(s,3,2); push(s,4,2); cout<<pop(s,1)<<endl; cout<<pop(s,1)<<endl; cout<<pop(s,2)<<endl; cout<<pop(s,2)<<endl; return 0;}
0 0
- 顺序栈和链栈的实现
- 栈的顺序实现和链接实现
- 栈的顺序表实现和链表实现
- 顺序栈的实现和操作
- 顺序栈的实现和操作
- 顺序栈的表示和实现
- 顺序栈的表示和实现
- 栈的顺序表示和实现
- 栈的顺序表示和实现
- 栈的顺序表示和实现
- 栈的顺序表示和实现(数据结构)
- 栈的顺序表示和实现
- 栈的顺序表示和实现
- 栈的顺序存储结构和实现
- 栈的顺序表示和实现
- 顺序栈的设计和实现
- 两种栈的实现--顺序栈和链表栈
- 顺序栈的实现和c++模板
- Unity 3D中的内存管理
- 裁剪区域和视口区域(2)
- C++优先队列的基本使用方法
- json--解析总结
- Hibernate-CRUD简单实例
- 顺序栈和链栈的实现
- php实现调用百度地图功能
- 三级联动
- listview 简单实现顶部暂停效果
- 使用vitamio类库播放视频
- 通过jquery的ajax请求本地的json文件
- SpringMVC详细示例实战教程
- MxNet教程:使用一台机器训练1400万张图片
- CSS阴影效果(Box-shadow)介绍与用法