C语言 数据结构 栈和队列 顺序栈(栈的顺序存储结构)

//C语言--数据结构--栈和队列  顺序栈(栈的顺序存储结构)


#include 
#include 
#include 
#include 
#include 
#include 


#define STACK_INIT_SIZE      100 //初始化分配大小
#define STACK_INCREMENT_SIZE 10 //增加分配大小


typedef  int  ElemType;


typedef struct{
ElemType  *base;    //栈底指针(存储空间首地址)
ElemType  *top;     //栈顶指针
int       stacksize;//顺序存储空间的大小
}OrderStack;


int  InitStack(OrderStack &s);//初始化栈(构建一个空栈)
int  Pop(OrderStack &s);//出栈(删除栈顶元素)
void Traverse(OrderStack &s);//迭代栈
int  GetTop(OrderStack s);//获取栈顶元素   
int  Push(OrderStack &s,ElemType &e);//入栈


//初始化栈(构建一个空栈)
int InitStack(OrderStack &s){
s.base=(ElemType*)malloc(10);
if (!s.base)
exit(0);//存储分配失败  
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return 1;
}


//获取栈顶元素   
int GetTop(OrderStack s){
ElemType e;
if (s.top==s.base){
return FALSE;
}else{
e=*(s.top-1);
}
return e;
}


//入栈
int Push(OrderStack &s,ElemType &e){
if ((s.top-s.base)>=s.stacksize){
s.base=(ElemType *)realloc(s.base,(s.stacksize+STACK_INCREMENT_SIZE)*sizeof(ElemType));
if (!s.base){
return false;
}
s.top=s.base+s.stacksize;
s.stacksize=s.stacksize+STACK_INCREMENT_SIZE;
printf("%-6顺序栈长度不足!!!开始扩充元素--> %d\n",s.stacksize);
}
*s.top=e;
s.top++;
return 1;
}


//出栈(删除栈顶元素)   
int Pop(OrderStack &s){
ElemType e;
if (s.top==s.base){
return 0;
}else{
s.top--;
e=*s.top;
return e;
}
}


//迭代栈
void Traverse(OrderStack &s){
if (s.top==s.base){


} else{
ElemType *traverse=s.top;
while (traverse>s.base){
traverse--;
printf("%d\n",*traverse);
}
}
}
 
int main(){
OrderStack s;
InitStack(s);
for (int i=1;i<=10;i++){
//*s.top=i;
//++s.top;
Push(s,i);//入栈
printf("获取栈顶元素 %d\n",GetTop(s));
}
printf("---------------入栈---------------\n");
int k=100;
int m=200;
Push(s,k);//入栈
printf("获取栈顶元素 %d\n",GetTop(s));
Push(s,m);//入栈
printf("获取栈顶元素 %d\n",GetTop(s));
printf("---------------出栈---------------\n");
printf("获取出栈元素 %d\n",Pop(s));
printf("获取出栈元素 %d\n",Pop(s));
printf("获取出栈元素 %d\n",Pop(s));
printf("获取出栈元素 %d\n",Pop(s));
printf("---------------迭代---------------\n");
Traverse(s);
system("pause");
return 0;
}

 

你可能感兴趣的:(C语言,数据结构,栈和队列,顺序栈(栈的顺序存储结构))