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

本文介绍了一种使用链表实现栈的数据结构方法,并提供了具体的C语言实现代码。通过定义链表节点结构体,实现了栈的基本操作:入栈(push)和出栈(pop),展示了如何在链表头部进行元素的插入和删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值