第2关:实现一个链接存储的栈

news/2024/7/2 23:19:32
#if !defined(LINKED_STACK_H_985552)
#define LINKED_STACK_H_985552
typedef int T; //数据元素类型
struct LNode {T data;LNode* next;
};struct LinkStack {LNode* top; // 栈顶指针int len; // 栈的长度
};LinkStack* LS_Create();
void LS_Free(LinkStack* ls);
void LS_MakeEmpty(LinkStack* ls);
bool LS_IsEmpty(LinkStack* ls);
int LS_Length(LinkStack* ls);
void LS_Push(LinkStack* ls, T x);
bool LS_Pop(LinkStack* ls, T& item);
bool LS_Top(LinkStack* ls, T& item);
void LS_Print(LinkStack* ls);
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "LnkStack.h"
#pragma warning(disable:4996)int main()
{LinkStack* ls=LS_Create();char dowhat[100];while(true) {scanf("%s", dowhat);if (!strcmp(dowhat,"push")) {T x;scanf("%d", &x);LS_Push(ls,x);}else if (!strcmp(dowhat,"pop")) {T item;LS_Pop(ls, item);}else {break;}}int length=LS_Length(ls);printf("Stack length: %d\n", length);LS_Print(ls);LS_Free(ls);
}
#include <stdio.h>
#include <stdlib.h>
#include "LnkStack.h"/*创建栈*/
LinkStack* LS_Create(){LinkStack* ls=(LinkStack*)malloc(sizeof(LinkStack));ls->top = NULL;ls->len = 0;return ls;
}
/*释放栈*/
void LS_Free(LinkStack* ls)
{LNode* curr = ls->top;while(curr) {LNode* next = curr->next;free(curr);curr=next;}free(ls);
}/*将栈变为空栈*/
void LS_MakeEmpty(LinkStack* ls)
{LNode* curr = ls->top;while(curr) {LNode* next = curr->next;free(curr);curr=next;}ls->top = NULL;ls->len = 0;
}/*判断栈是否为空*/
bool LS_IsEmpty(LinkStack* ls)
{// 请在这里补充代码,完成本关任务return ls->top==NULL?true:false;}/*获取栈的长度*/
int LS_Length(LinkStack* ls)
{// 请在这里补充代码,完成本关任务return ls->len;}/*将x进栈*/
void LS_Push(LinkStack* ls, T x)
{// 请在这里补充代码,完成本关任务LNode*link=(LNode*)malloc(sizeof(LNode));link->data=x;link->next=ls->top;ls->top=link;ls->len++;}/*出栈。出栈元素放入item;如果空栈,将返回false*/
bool LS_Pop(LinkStack* ls, T& item)
{// 请在这里补充代码,完成本关任务LNode*link=ls->top;if(LS_IsEmpty(ls)){return false;}item=ls->top->data;ls->top=link->next;free(link);ls->len--;return true;}/*读栈顶元素放入item。如果空栈,将返回false*/
bool LS_Top(LinkStack* ls, T& item)
{// 请在这里补充代码,完成本关任务if(LS_IsEmpty(ls)){return false;}item=ls->top->data;return true;}/*从栈顶到栈底打印各结点数据*/
void LS_Print(LinkStack* ls)
{if (ls->len==0){ printf("The stack: Empty!");return;}printf("The stack (from top to bottom):");LNode* curr=ls->top;while(curr) {printf(" %d", curr->data);curr=curr->next;}// printf("\n");
}

http://lihuaxi.xjx100.cn/news/285924.html

相关文章

最常用 150 个Linux命令汇总(建议收藏)

点击上方[视学算法]→右上角[...]→[设为星标⭐]来源&#xff1a;banana 童www.cnblogs.com/bananaaa/p/7774467.htmllinux 命令是对 Linux 系统进行管理的命令。对于 Linux 系统来说&#xff0c;无论是中央处理器、内存、磁盘驱动器、键盘、鼠标&#xff0c;还是用户等都是文件…

牛客小白月赛25 补题+题解[A-J]

加油加油加油&#xff01; 文章目录A.AOE还是单体&#xff1f;B.k-size字符串C.白魔法师D.抽卡E.点击消除F.疯狂的自我检索者G.解方程H.神奇的字母&#xff08;二&#xff09;I.十字爆破J.异或和之和A.AOE还是单体&#xff1f; 思路&#xff1a;这题数据范围2e5&#xff0c;如…

Python | 一万多条拼车数据,看春运的迁徙图

作者 | 白苏&#xff0c;医疗健康领域产品经理一枚&#xff0c;Python&R爱好者来源 | InThirty编辑 | Jane今天是腊月二十八&#xff0c;你们都到家了吗&#xff1f;这篇文章&#xff0c;作者对北京、上海、广州、深圳、杭州等地 1万多条出行数据进行分析&#xff0c;得出了…

Unity3d多线程

为什么80%的码农都做不了架构师&#xff1f;>>> &#xff08;一&#xff09;多线程的创建 Thread t new Thread(new ThreadStart(Go)); Thread t1 new Thread(Go); 两种创建方式没有区别&#xff1b; &#xff08;二&#xff09;多线程的状态控制和优先级 多线程…

第1关:利用栈实现整数的十进制转八进制

#ifndef stack__h #define stack__h#include <stdio.h> #include <stdlib.h>typedef int T; // 数据元素的数据类型struct Stack{T* data; // 数据元素存储空间的开始地址int top; // 栈顶的位置int max; // 栈的最大长度 };Stack* Stack_Create(int maxlen)…

数据可视化[python-pyecharts]制作中国各省份近三个月新型冠状病毒肺炎变化图

大体思路&#xff1a; 通过pyecharts等库一个for循环批量绘制近几个月每天的图&#xff0c;最后通过pr将图片合成 先看一下某一天的样图&#xff0c;用pr组合起来之后就是个动态的了 文章目录安装pyecharts库数据来源代码部分1.导入库2.将路径中所有文件找出保存至列表3.处理导…

树上启发式合并问题 ---- 2019icpc南昌 K. Tree (树上启发式合并 + 动态开点线段树)

题目链接 题目大意&#xff1a; 就是给你一颗树&#xff0c;每个点有个权值viv_ivi​&#xff0c;问你有多少对(x,y)(x,y)(x,y)满足&#xff1a; xxx不是yyy的祖先yyy也不是xxx的祖先xxx和yyy的距离不超过kkkxxx和yyy最近公共祖先&#xff1a;zzz,满足vxvy2vzv_xv_y2v_zvx​vy…

程序员最常说的9句话,精准!

1、别更新了学不动了。2、我不会修电脑&#xff0c;谢谢。3、听说今晚不用加班。4、是你的网络有问题。5、清一下缓存再试试6、扫码提需求&#xff0c;谢谢。7、换一台设备试试看。8、保证今晚十点上线。9、键盘给你&#xff0c;你来写。IT程序猿 微博网友评论&#xff1a;猫儿…