链栈的初始化以及用C语言表示进栈、出栈和判断栈空

简介: 链栈的初始化以及用C语言表示进栈、出栈和判断栈空

链栈的初始化

链栈采用链表来存储栈

//链栈的定义
typedef struct LNode
{
  int data;
  struct LNode *next;
}LNode;

初始化链栈,要制造一个头节点

//初始化一个链栈
void initstack(LNode*&Lst)
{
  Lst=(LNode*)malloc(sizeof(LNode));//制造头节点
  Lst->next=NULL;
}

判断栈空

//判断链栈是否为空
int isEmpty(LNode *Lst)
{
  if(Lst->next==NULL)
    return 1;
  else
    return 0;
}

进栈

//进栈
void push(LNode *Lst,int x)
{
  LNode *p;
  p=(LNode*)malloc(sizeof(LNode));
  p->next=NULL;
  //头插法
  p->data=x;
  p->next=Lst->next;
  Lst->next=p;
}

出栈

//出栈
int pop(LNode *Lst,int &x)
{
  LNode *p;
  if(Lst->next==NULL)
    return 0;
  //单链表删除
  p=Lst->next;
  x=p->data;
  Lst->next=p->next;
  free(p);
  return 1;
}

ok,没问题!

目录
相关文章
|
7天前
|
C语言
|
24天前
|
存储 编译器 C语言
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)一
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)一
24 2
|
24天前
|
编译器 Linux C语言
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)二
C语言学习记录——结构体(声明、初始化、自引用、内存对齐、结构体设计、修改默认对齐数、结构体传参)二
23 1
|
17天前
|
C语言 C++
【数据结构】C语言实现:栈(Stack)与队列(Queue)
【数据结构】C语言实现:栈(Stack)与队列(Queue)
|
1月前
|
编译器 C语言 C++
从C语言到C++⑦(第二章_类和对象_下篇)初始化列表+explicit+static成员+友元+内部类+匿名对象(上)
从C语言到C++⑦(第二章_类和对象_下篇)初始化列表+explicit+static成员+友元+内部类+匿名对象
18 1
|
24天前
数据结构——栈(C语言版)
数据结构——栈(C语言版)
11 0
|
1月前
|
存储 算法 编译器
C语言中的二维数组:定义与初始化技术详解
C语言中的二维数组:定义与初始化技术详解
60 0
|
1月前
|
存储 编译器 C语言
C语言指针变量的定义与初始化技术详解
C语言指针变量的定义与初始化技术详解
27 0
|
1月前
|
存储 C语言 索引
C语言一维数组的定义与初始化技术详解
C语言一维数组的定义与初始化技术详解
39 0
|
1月前
|
机器学习/深度学习 算法 编译器
【C语言】函数 ---- 函数的嵌套调用和链式访问、函数的声明和定义、变量的声明和定义、函数递归与迭代、递归时的栈溢出问题
【C语言】函数 ---- 函数的嵌套调用和链式访问、函数的声明和定义、变量的声明和定义、函数递归与迭代、递归时的栈溢出问题
59 0