链栈
#define OK 1
#define ERROR 0
#define SElemType int
#define Status int
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define ERROR 0
#define SElemType int
#define Status int
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct SNode{
SElemType data;
struct SNode *next;
}SNode,*LinkStack;
//定义结点
Status InitStack(LinkStack &S){
S=(LinkStack)malloc(sizeof(struct SNode));
S->next=NULL;
return OK;
}
//初始化栈
Status Push(LinkStack &S,SElemType e){
LinkStack p;
p=(LinkStack)malloc(sizeof(struct SNode));
p->next=S->next;
p->data=e;
S->next=p;
return OK;
}
// 在栈顶插入e
Status Pop(LinkStack &S,SElemType e){
LinkStack q;
if(S->next==NULL){
return ERROR;
}
q=S->next;
e=q->data;
S->next=q->next;
printf("%d ",e);
return OK;
}
//删除栈顶元素,并显示其值
void print(LinkStack &S){
int i;
LinkStack D;
D=S->next;
while(D!=NULL) {
i=D->data;
D=D->next;
printf("%d ",i);
}
}//遍历输出栈S,(栈S没坏,我在下面实验了)
int main(){
LinkStack stack;
SElemType i;
InitStack(stack);
Push(stack,1);
Push(stack,2);
Push(stack,9);
Push(stack,6);
Push(stack,8);
Push(stack,7);
Push(stack,6);
Push(stack,3); //调用Push函数使元素入栈
printf("请输出删除的栈顶元素:");
printf("\n");
Pop(stack,i);
Pop(stack,i); //进行删除栈顶元素操作
printf("\n");
printf("请输出栈中各元素: ") ;
printf("\n");
print(stack); //调用print函数输出栈内元素
printf("\n");
LinkStack j=stack->next;
printf("此时栈顶元素为:%d",j->data); //输出栈顶元素判断栈S是否损坏,
}
LinkStack stack;
SElemType i;
InitStack(stack);
Push(stack,1);
Push(stack,2);
Push(stack,9);
Push(stack,6);
Push(stack,8);
Push(stack,7);
Push(stack,6);
Push(stack,3); //调用Push函数使元素入栈
printf("请输出删除的栈顶元素:");
printf("\n");
Pop(stack,i);
Pop(stack,i); //进行删除栈顶元素操作
printf("\n");
printf("请输出栈中各元素: ") ;
printf("\n");
print(stack); //调用print函数输出栈内元素
printf("\n");
LinkStack j=stack->next;
printf("此时栈顶元素为:%d",j->data); //输出栈顶元素判断栈S是否损坏,
}

浙公网安备 33010602011771号