链表栈的入栈和出栈操作

来源:互联网 发布:淘宝运费险怎么退邮费 编辑:程序博客网 时间:2024/05/01 02:12

链表栈的入栈和出栈操作

#include<stdio.h>

#include<stdlib.h>

typedef int ElemType;

typedef struct  linknode

{

       ElemType data;  //数据域

       struct linknode *next;  //指针域

}ListStack;

//入栈

/*

  已知变量:初始化的栈,存了数据的数组,数组的长度

*/

void Push(ListStack *s,ElemType e)

   ListStack *p;

   p=(ListStack*) malloc(sizeof(ListStack));

   p->data=e;

   p->next=s->next;

   s->next=p;

  

}

//出栈

/*

  存了数据的栈

*/

int  pop(ListStack *s)

  ListStack *temp;

  int e;

  if(s->next==NULL)

  return  0;

  else

  { 

    temp=s->next;

     printf("%d ",temp->data);

     s->next=temp->next;

      free(temp); 

  }

}

//输出栈

void printStack(ListStack *s){

           ListStack *p=s->next;

             while(p!=NULL){

             printf("%d",p->data);

             p=p->next;

      }     

      }

 

int main(){

       int i;

       ListStack *s;

       s=(ListStack*)malloc(sizeof(ListStack));

       s->next=NULL;

       Push(s,5);

       Push(s,8);

       printStack(s);

    pop(s);

    pop(s);

    pop(s);

    Push(s,14);

    pop(s);

      printf("\n");  

}

微笑本内容由安康学院"雨季"原创!

原创粉丝点击