数据结构(C语言版)实现链栈的创建,赋值随机数,进栈,出栈,取栈顶元素,输出
2023-09-27 14:25:56 时间
数据结构(C语言版)实现链栈的创建 赋值随机数 进栈 出栈 取栈顶元素 输出1.链表(链式存储结构)
C语言题解 | 移除元素(多种解法) 这是力扣上的一道简单题,需求是 移除数组中的指定元素,并且要求 空间复杂度为O(1) ,即原地移除,我们可以用顺序表中的任意位置删除的思想解决这个题,符合题目要求,当然还有其他解法。
C语言实现链栈相关操作 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
运算时受限的单链表 只能在链表头部进行操作 故没有必要附加头结点 栈顶指针就是链表的头指针
2.图示//链栈定义 typedef struct StackNode{ SElemType data; struct StackNode *next; }StackNode,*LinkStack;链栈初始化
//链栈初始化 Status InitStack(LinkStack S){ S NULL; return OK;链栈压栈
//链栈进栈 Status Push(LinkStack S,SElemType e){ //创建新结点 链栈没有上限 StackNode *p new StackNode(); if(!p) return ERROR; p- data e; p- next S; S p; return OK;链栈出栈
//链栈出栈 Status Pop(LinkStack S,SElemType e){ //判断链栈是不是空 if(!S) return ERROR; StackNode *p S; e S- data; S S- next; delete p; return OK;链栈获取栈顶元素
//取链栈栈顶元素 Status GetTop(LinkStack S,SElemType e){ //判断链栈是不是空 if(!S) return ERROR; e S- data; return OK;链栈赋随机值
//链表赋值 Status InStack(LinkStack S,int n){ for(int i 0;i n;i ){ Push(S,rand()); return OK;链栈输出
//链栈打印 Status PrintStack(LinkStack S){ //判断链栈是不是空 if(!S) return ERROR; for(int i 0;S;i ){ cout S- data ; S S- next; cout endl; return OK;4.代码实现
#include iostream #include stdlib.h using namespace std; #define ERROR 0 #define OK 1 typedef int SElemType; typedef int Status; //链栈定义 typedef struct StackNode{ SElemType data; struct StackNode *next; }StackNode,*LinkStack; //链栈初始化 Status InitStack(LinkStack S){ S NULL; return OK; //链栈进栈 Status Push(LinkStack S,SElemType e){ //创建新结点 链栈没有上限 StackNode *p new StackNode(); if(!p) return ERROR; p- data e; p- next S; S p; return OK; //链栈出栈 Status Pop(LinkStack S,SElemType e){ //判断链栈是不是空 if(!S) return ERROR; StackNode *p S; e S- data; S S- next; delete p; return OK; //取链栈栈顶元素 Status GetTop(LinkStack S,SElemType e){ //判断链栈是不是空 if(!S) return ERROR; e S- data; return OK; //链栈打印 Status PrintStack(LinkStack S){ //判断链栈是不是空 if(!S) return ERROR; for(int i 0;S;i ){ cout S- data ; S S- next; cout endl; return OK; //链表赋值 Status InStack(LinkStack S,int n){ for(int i 0;i n;i ){ Push(S,rand()); return OK; int main(){ int e; //链表初始化 LinkStack S; InitStack(S); //链表赋值 cout 链表赋值 endl; cout 随机给链表赋值多少个 endl; cin e; InStack(S,e); //遍历输出链表 cout 链表赋值完成 endl; PrintStack(S); //链表进栈 cout 链表进栈 endl; cout 要进栈的元素 endl; cin e; Push(S,e); cout 链表进栈完成 endl; PrintStack(S); //链表出栈 cout 链表出栈 endl; cout 链表出栈完成 endl; Pop(S,e); cout e endl; //获取链栈栈顶元素 cout 获取链栈栈顶元素完成 endl; GetTop(S,e); cout e endl; return 0;编译运行
C语言题解 | 移除元素(多种解法) 这是力扣上的一道简单题,需求是 移除数组中的指定元素,并且要求 空间复杂度为O(1) ,即原地移除,我们可以用顺序表中的任意位置删除的思想解决这个题,符合题目要求,当然还有其他解法。
C语言实现链栈相关操作 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
相关文章
- C语言程序设计100例之(69):麦森数
- C语言定义数组时使用枚举作为数组的下标 ——c99功能
- [C语言] 字符串的输出格式
- C语言输出百分号
- C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义
- C语言二级指针-指向指针的指针详解
- 【创】数据结构与算法——双向链表byC语言【C语言网】
- 《51单片机应用开发范例大全(第3版)》——第1章 单片机C语言开发基础
- C语言学生管理系统
- SwiftUI 精品组件之流态背景组件Liquid backsplash掌握SwiftUI调用C语言函数
- 【C语言】编一个程序,将两个字符串s1和s2比较,若s1>s2,输出一个正数;若s1=s2.输出0;若s1<s2,输出一个负数。
- 【输出N行杨辉三角形】两种输出方式(直角三角形型和等腰三角形型)C语言
- 【C语言】有一个班4个学生,5门课程。①求第一门课程的平均分②找出有两门以上课程不及格的学生,输出她们的学号和全部课程成绩及平均成绩③找出平均成绩在90分以上或全部课程成绩在85分以上的学生
- 【C语言】简易登录注册系统(登录、注册、改密、文件操作)
- linux下C语言获取微秒级时间
- 《C语言解惑》—— 2.1 printf输出的小奥妙
- C语言运算符与表达式——输出逆序数and二进制包含0和1的数量and判断是否为2的整数次幂的两种办法
- C语言数据类型及输出——体重是否正常、球的体积、计算存银行利息and浮点数长度与精度
- C语言实现矩阵求逆(可抵制奇异值、坏值导致的奇异解)
- C语言条件编译(#if,#ifdef,#ifndef,#endif,#else,#elif)
- 1082 射击比赛 (20 分)C语言
- 1006 换个格式输出整数 (15 分)C语言
- 第三章 C语言输入与输出
- 练习 1-4 编写一个程序打印摄氏温度转换为相应华氏温度的转换表。// C语言
- linux下C语言实现可打印字符及键值的输出
- C语言-----依次输出一个数的各位(递归)