數據結構之棧的簡單應用(入棧 出棧 取棧頂元素 求棧的長度)


//將123456依次入棧,將45出棧,再將67進棧最后全部出棧依次輸出
#include<iostream>
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define maxsize 100
using namespace std;
typedef struct node
{
int stack[maxsize];
int top;
}seqstack;

void init(seqstack *s)
{
s->top=0;
}
int empty(seqstack s)
{
if(s.top==0)
return 1;
else
return 0;
}
int get(seqstack s,int *e)
{
if(s.top<=0)
{
cout<<"棧已空!";
return 0;
}
else
{
*e=s.stack[s.top-1];
return 1;
}
}


int push(seqstack *s,int e)
{
if(s->top>=maxsize)
{
cout<<"棧已滿!";
return 0;
}
else
{
s->stack[s->top]=e;
s->top++;
return 1;
}
}
int pop(seqstack *s,int *e)
{
if(s->top<=0)
{
cout<<"棧已空!";
return 0;
}
else
{
s->top--;
*e=s->stack[s->top];

return 1;
}
}


int length(seqstack s)
{
return s.top;
}
void clear(seqstack *s)
{
s->top==0;
}

int main()
{
seqstack s;
int i;
int a[]={1,2,3,4,5};
int e;
init(&s);
for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
{
if(push(&s,a[i])==0)
{
cout<<"不能入棧";
return 0;
}
}
cout<<"出棧的元素為:";
if(pop(&s,&e)==1)
cout<<e;
if(pop(&s,&e)==1)
cout<<e;
cout<<endl;

cout<<"棧頂元素為:";
if(get(s,&e)==0)
{
cout<<"棧為空";
return 0;
}
else
{
cout<<e;
cout<<endl;
}
if(push(&s,6)==0)
{
cout<<"棧已滿";
return 0;
}
if(push(&s,7)==0)
{
cout<<"棧已滿";
return 0;
}

cout<<"棧中元素個數為:"<<length(s);
cout<<endl;
cout<<"出棧元素的序列:";
while(!empty(s))
{
pop(&s,&e);
cout<<e;
}
cout<<endl;

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM