栈的链式储存(不存在上溢)

//栈的链式储存(不存在上溢)
#include
#include
typedef char ElemType;
struct linknode
{
 ElemType data;
 struct linknode *next;
};
//init a stack
void initstack(struct linknode **s)
{
 *s=NULL;
}
//push
void push(struct linknode **s,ElemType x)
{
 struct linknode *q;
 q=(struct linknode *)malloc(sizeof(struct linknode));
 q->data=x;
 q->next=*s;
 *s=q;//Point to the head of stack.
}
//pop
void pop(struct linknode **s)
{
 struct linknode *t;
 if(*s==NULL)
 {
  printf("The stack is empty./n");
 }
 else
 {
  t=*s;
  *s=t->next;
  free(t);// free the EMS memory,in case of memory leaks.
 }
 
}
//Get the top of stack
ElemType Gettop(struct linknode **s)
{
 if(*s==NULL)
 {
  printf("The stack is empty./n");
 }
 else return ((*s)->data);
}
//dispay the nodes in stack
void dispay(struct linknode **s)
{
 struct linknode *q;
 printf("the nodes in stack:/n");
 q=*s;
 while(q!=NULL)
 {
  printf("%5c",q->data);
  q=q->next;
 }
 printf("/n");
}
main()

 struct linknode s;
 struct linknode *stack=&s;
 initstack(&stack);
 printf("Push some words into the stack./n");
 push(&stack,'i');
 push(&stack,'a');
 dispay(&stack);
 printf("Get the top of stack:%5c/n",Gettop(&stack));
 printf("Pop one node,/n");
 pop(&stack);
 dispay(&stack);

 


 printf("Hello/n");
}

你可能感兴趣的:(数据结构与算法)