数据结构c语言版 栈的相关问题


#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
typedef char elemtype;
typedef struct linknode
{   elemtype data;
    struct linknode *next;
}LinkStNode;
void InitStack(LinkStNode *&s)
{     s=(LinkStNode *)malloc(sizeof(LinkStNode));
      s->next=Null;
}
bool StackEmpty(s)
{ 
    return(s->next==Null);
}
void Push(LinkStNode *&s,elemtype e)
{  LinkStNode *p;
   p=(LinkStnode *)malloc(sizeof(LinkStnode));
   p->data=e;
   p->next=s->next;
   s->next=p;}
}
int Pop(LinkStNode *&s,elemtype &e)
{ LinkStNode *p;
  if(s->next ==Null)
      return 0;
  p=s->next;
  e=p->next;
  s->next=p->next;
  free(p);
  return 1;
}
void DestroyStack(LinkStNode *&s)
{ LinkStNode *pre=s,*p=s->next;
  while(p!=Null)
  {free(pre);
  pre=p;
  p=pre->next;
  }
  free(pre);
}
int main()
{    LinkStNode *s;
     char a,b,c,d,e;
     InitStack(&s);
     StackEmpty(s);
     Push(&s,a);
     Push(&s,b);
     Push(&s,c);
     Push(&s,d);
     Push(&s,e);
     StackEmpty(s);
     while(!StackEmpty(s))
     { Pop(&s,&e);
     printf("%4c,e);
     }
     StackEmpty(s);
}

源代码如上
功能是 初始化栈 判断栈是否为空 近栈元素abcde 输出栈序列 判断栈s是否非空 释放栈