数据结构--单链表实现栈(头部插入数据的链表)

来源:互联网 发布:linux怎么c语言编程 编辑:程序博客网 时间:2024/06/05 00:10
#include <stdio.h>#include <stdlib.h>/*链表实现栈,只需要实现insert,delete方法*/int length;//栈的元素数量 typedef struct ss{//链表节点         int key;        struct ss *next;}Node;void insert(Node *head,int num)//链表头部插入数据 {     if(length<=0)          printf("栈已满无法输入新的元素");     else     {          Node *p=NULL;          p=(Node *)malloc(sizeof(Node));//开辟新的节点          p->key=num;          p->next=head->next;          head->next=p;     } }int delete(Node *head)//删除第一个节点{    int num;     if(head->next==NULL)     {         printf("栈已空,没有元素");         num=-1;         }     else     {         num=head->next->key;         head->next=head->next->next;//删除第一个节点      }     return num;}void push(Node *head,int num)//数据入栈操作 {     insert(head,num);     printf("入栈一个元素:%d\n",num);     length--;} int pop(Node *head)//数据出栈操作 {    int num=delete(head);    printf("出栈一个元素:%d\n",num);    length++;    return num;}int main(int argc, char *argv[]){  int i,num;  Node *list_stack = (Node *)malloc(sizeof(Node));    list_stack->next=NULL;  printf("输入栈的长度:");  scanf("%d",&length);  for(i=0;i<5;i++)  {      scanf("%d",&num);      push(list_stack,num);  }  for(i=0;i<5;i++)     pop(list_stack);  system("PAUSE");  return 0;}

原创粉丝点击