棧的鏈式儲存(不存在上溢)

來源:互聯網
上載者:User

//棧的鏈式儲存(不存在上溢)
#include<malloc.h>
#include<stdio.h>
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");
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.