【数据结构/C++】栈和队列_链栈

链头 == 栈顶。

cpp 复制代码
#include<iostream>
using namespace std;
// 链栈
typedef int ElemType;
typedef struct Linknode {
  ElemType data;
  struct Linknode *next;
} *LiStack;
// 初始化
void InitLiStack(LiStack &S) {
  S = (LiStack)malloc(sizeof(struct Linknode));
  S->next = NULL;
}
// 入栈
bool PushLiStack(LiStack &S, ElemType x) {
  LiStack p = (LiStack)malloc(sizeof(struct Linknode));
  p->data = x;
  p->next = S->next;
  S->next = p;
  return true;
}
// 出栈
bool PopLiStack(LiStack &S, ElemType &x) {
  if (S->next == NULL) return false;
  LiStack p = S->next;
  x = p->data;
  S->next = p->next;
  free(p);
  return true;
}
// 遍历
void TraverseLiStack(LiStack S) {
  LiStack p = S->next;
  while (p != NULL) {
    cout << p->data << " ";
    p = p->next;
  }
  cout << endl;
}
// 求链栈长度
int StackLength(LiStack S) {
  int length = 0;
  LiStack p = S->next;
  while (p != NULL) {
    length++;
    p = p->next;
  }
  return length;
}
int main() {
  LiStack S;
  ElemType x;
  InitLiStack(S);
  PushLiStack(S, 1);
  PushLiStack(S, 2);
  PushLiStack(S, 3);
  PopLiStack(S, x);
  cout << "出栈元素:" << x << endl;
  TraverseLiStack(S);
  cout << "链栈长度:" << StackLength(S) << endl;
  return 0;
}
相关推荐
skywalk816315 小时前
言知项目后续方向建议
开发语言·学习·编程
dtq042415 小时前
C语言刷题数组5,6(求平均值,求最大值)
c语言·数据结构·算法
郝学胜_神的一滴15 小时前
Qt 高级开发 031:QListWidget图标布局实战
c++·qt
拉勾科研工作室15 小时前
区块链工程毕业论文题目【249个】
开发语言·javascript
z落落16 小时前
C#WinForm控件实战:Panel与单选框动态创建
开发语言·c#
ptc学习者16 小时前
python 中描述符@property property 大概的样子
开发语言·python
zmzb010316 小时前
Python课后习题训练记录Day129
开发语言·python
洛水水16 小时前
【力扣100题】81.寻找两个正序数组的中位数
数据结构·算法·leetcode
张忠琳16 小时前
【Go 1.26.4】Golang Map 深度解析
开发语言·后端·golang
Vertira16 小时前
如何对QT开发的软件进行打包[已解决]
开发语言·qt