数据结构栈的实现 顺序栈,链栈
2018-02-05 15:45
531 查看
typedef struct stacknode
{
int data;
struct stacknode *next;
}stacknode,*stacklist;
#include <iostream>
#include<malloc.h>
#include<stdio.h>
using namespace std;
int maxsize = 100;
typedef struct sqstack
{
int *base;
int *top;
int stacksize;
}sqstack;
bool init(sqstack &s)//初始化栈
{
s.base = new int(maxsize);
if(!s.base)
return false;
s.top = s.base;
s.stacksize = maxsize;
return true;
}
bool pushstack(sqstack &s)//压入栈
{
if(s.top-s.base==maxsize)
return false;
int n;
cout<<"输入入栈元素个数"<<endl;
cin>>n;
int e;
for(int i= 0;i<n;i++){
cin>>e;
*s.top++=e;//先赋值,指针加一
}
return true;
}
int outstack (sqstack &s)//出栈
{
int e;
if(s.base == s.top)
return 0;
e=*--s.top;
return e;
}
int popstack(sqstack &s)//取栈顶元素
{
if(s.top!=s.base)
{
return *(s.top-1);
}
}
int main()
{
sqstack s;
int e;
init(s);
pushstack(s);
int ans = outstack(s);
int ans1 = popstack(s);
cout<<ans<<endl<<ans1;
return 0;
}
#include<stdio.h>
#include<iostream>
#include<stack>
#include<malloc.h>
using namespace std;
typedef struct stacknode
{
int data;
struct stacknode *next;
}stacknode,*stacklist;
void init(stacklist s)//初始化
{
s = (stacklist)malloc(sizeof(stacklist));
s->next=NULL;
}
int emptystack(stacklist s)
{
if(s->next==NULL)
return 1;
return 0;
}
int pushstack(stacklist s)
{
stacklist p;
// p=(stacklist)malloc(sizeof(stacklist));
// if(p==NULL)
// return 0;
cout<<"输入入栈的个数"<<endl;
int n ;
cin>>n;
int e;
for(int i = 0;i < n;i++)
{
cout<<"输入元素"<<endl;
p=(stacklist)malloc(sizeof(stacklist));
cin>>e;
p->data = e;
p->next= s->next;
s->next = p;
}
return 1;
}
int popstack(stacklist s,int *e)
{
stacknode *temp;
if(emptystack(s))
return 0;
temp = s->next;
*e = temp->data;
s->next = temp->next;
free(temp);
return *e;
}
int main()
{
int e;
stacknode s;
init(&s);
pushstack(&s);
cout<<"弹出的元素为:";
cout<<popstack(&s,&e)<<endl;
cout<<"弹出的元素为:";
cout<<popstack(&s,&e);
return 0;
}
{
int data;
struct stacknode *next;
}stacknode,*stacklist;
stacknode *p和stacklist p是等价的,stacknode是个 struct 的tag struct stacknode 才形成一个 type , 经过 typedef struct stacknode { ... } stacknode; 之后 stacknode等同于 struct node.
#include <iostream>
#include<malloc.h>
#include<stdio.h>
using namespace std;
int maxsize = 100;
typedef struct sqstack
{
int *base;
int *top;
int stacksize;
}sqstack;
bool init(sqstack &s)//初始化栈
{
s.base = new int(maxsize);
if(!s.base)
return false;
s.top = s.base;
s.stacksize = maxsize;
return true;
}
bool pushstack(sqstack &s)//压入栈
{
if(s.top-s.base==maxsize)
return false;
int n;
cout<<"输入入栈元素个数"<<endl;
cin>>n;
int e;
for(int i= 0;i<n;i++){
cin>>e;
*s.top++=e;//先赋值,指针加一
}
return true;
}
int outstack (sqstack &s)//出栈
{
int e;
if(s.base == s.top)
return 0;
e=*--s.top;
return e;
}
int popstack(sqstack &s)//取栈顶元素
{
if(s.top!=s.base)
{
return *(s.top-1);
}
}
int main()
{
sqstack s;
int e;
init(s);
pushstack(s);
int ans = outstack(s);
int ans1 = popstack(s);
cout<<ans<<endl<<ans1;
return 0;
}
#include<stdio.h>
#include<iostream>
#include<stack>
#include<malloc.h>
using namespace std;
typedef struct stacknode
{
int data;
struct stacknode *next;
}stacknode,*stacklist;
void init(stacklist s)//初始化
{
s = (stacklist)malloc(sizeof(stacklist));
s->next=NULL;
}
int emptystack(stacklist s)
{
if(s->next==NULL)
return 1;
return 0;
}
int pushstack(stacklist s)
{
stacklist p;
// p=(stacklist)malloc(sizeof(stacklist));
// if(p==NULL)
// return 0;
cout<<"输入入栈的个数"<<endl;
int n ;
cin>>n;
int e;
for(int i = 0;i < n;i++)
{
cout<<"输入元素"<<endl;
p=(stacklist)malloc(sizeof(stacklist));
cin>>e;
p->data = e;
p->next= s->next;
s->next = p;
}
return 1;
}
int popstack(stacklist s,int *e)
{
stacknode *temp;
if(emptystack(s))
return 0;
temp = s->next;
*e = temp->data;
s->next = temp->next;
free(temp);
return *e;
}
int main()
{
int e;
stacknode s;
init(&s);
pushstack(&s);
cout<<"弹出的元素为:";
cout<<popstack(&s,&e)<<endl;
cout<<"弹出的元素为:";
cout<<popstack(&s,&e);
return 0;
}
相关文章推荐
- 顺序栈和链栈的实现
- 链栈,顺序栈,单链队列,循环队列,非循环队列的简单实现
- 链栈和顺序栈的实现
- 【数据结构】堆栈(顺序栈、链栈)的JAVA代码实现
- C#实现顺序栈和链栈
- 顺序栈和链栈的基本操作实现
- 栈的实现-顺序栈和链栈
- c/c++实现顺序栈和链栈
- 数据结构-栈:顺序栈与链栈的C++模板类实现
- 顺序栈、链栈已及队列的实现
- 数据结构-------顺序栈与链栈的实现
- C# 代码实现 顺序栈和链栈
- 用户体验测试的自动化实现 - 检查Tab顺序
- 线性表的基本操作实现及其应用之顺序表的建立与操作实现
- [C/C++]函数参数的入栈顺序与可变参数的实现
- Java数据结构-线性表之栈(顺序栈和链栈)
- C语言栈顺序结构实现代码
- C语言实现顺序表
- 数据结构 线性表 顺序表示和实现
- c语言实现顺序表