数据结构--单链表实现栈(头部插入数据的链表)
来源:互联网 发布: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;}