链栈

#define OK  1
#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是否损坏,
 }
 
posted @ 2018-11-13 22:11  新生代史诗级低调传奇男  阅读(44)  评论(0)    收藏  举报