栈的链式存储
发布网友
发布时间:2022-04-26 21:01
我来回答
共2个回答
热心网友
时间:2023-11-01 20:32
#include<stdio.h>
#include<stdlib.h>
#define elemtype int
#define MAXSIZE 100
typedef struct stack{
elemtype elem;
struct stack *next;
}STACK;
//链式存储的栈结构,及其相应算法
void InitStack(STACK *top)
{//初始化空栈
top->next=NULL;
}
void DestroyStack(STACK *top)
{//销毁栈,将栈所占内存空间释放
STACK *p;
p=top->next;
while(p!=NULL){
top->next=p->next;
free(p);
p=top->next;
}
}
int EmptyStack(STACK *top)
{//判断是否栈空,为空则返回1,否则返回0
if(top->next==NULL){
return 1;
}
else{
return 0;
}
}
int push(STACK *top, elemtype x)
{//元素x进栈操作,成功返回1,否则返回0
STACK *p;
p=(STACK *)malloc(sizeof(STACK));
p->elem=x;
p->next=top->next;
top->next=p;
return 1;
}
elemtype pop(STACK *top)
{//出栈操作,返回出栈元素
if(EmptyStack(top)){
printf("栈为空");
return 0;
}
else{
elemtype x;
STACK *p;
p=top->next;
x=p->elem;
top->next=p->next;
free(p);
p=top->next;
return x;
}
}
void Print(STACK *top)
{//依次输出栈顶到栈底的所有元素
STACK *h;
h=top->next;
while(h!=NULL){
printf("%4d",h->elem);
h=h->next;
}
}
int main(void)
{
STACK *top=NULL;
top=(STACK *)malloc(sizeof(STACK));
InitStack(top);
push(top,1);
push(top,2);
push(top,4);
Print(top);
push(top,5);
Print(top);
pop(top);
Print(top);
DestroyStack(top);
}
热心网友
时间:2023-11-01 20:32
哈哈 有点烦哦 找认识得人帮你做啊 不算难