#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;
}
数据结构--单链表实现栈(头部插入数据的链表)
最新推荐文章于 2022-07-14 16:35:11 发布