首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言实现

你可以把视作一个有下底的盒子,然后你把各种书放进去,如果你想拿书,你拿到的第一步一定是你最后放进去的,这就是 首先考虑他的形势,我们需要一个top指针和一个buttom指针分别指向顶和底的下一个节点...因为方便:试想一下我们要判断是否空就只需要判断top是否等于buttom,如果buttom指向底显然就会麻烦许多 下面我们先用C语言实现一下: 首先我们需要对这个装东西的“盒子”定义,而这个盒子就是...入 假设我们要向里面添加一个数据需要进行哪些操作?...*n=sk->top; sk->top=n->next; delete n; } 就像上面,另还要注意出需要考虑是否为空,我没有写 至此,一个C语言版本的及其主要操作就完成了,这也是我第一次写结构...,因为我用C++ stack sk; sk.push(5); //..

3.9K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    c语言实现(顺序,链)

    个人主页: :✨✨✨初阶牛✨✨✨ 推荐专栏: C语言进阶 个人信条: 知行合一 本篇简介:>:讲解用c语言实现:“数据结构之"”,分别从"顺序"和"链"的接口讲解....""不需要进行随机访问其中的元素,只能从顶访问,链表是可以完成的. 2.1 初始化"链" 对于链表实现,如果不带头结点: 我们不需要特意去写一个初始化函数.只需要创建一个顶指针,将其初始化指向...更新顶.(将顶指针指向原顶的下一个结点↓)....(ST* ps);//返回顶元素 void STDestory(ST* ps);//的销毁 接口实现区( stack.c) #include "stack.h" //初始化 void InitST...void STDestory(SLStackNode* ps);//的销毁 接口实现区(SLStack.c) #include "SLStack.h" //SLStackNode* InitStack

    28920

    你知道如何使用队列实现吗?(C语言

    这时一道非常经典的题型,因为和队列的性质是相反的,队列的数据是先入先出,的数据是后入先出,那么怎样使用两个队列实现呢? 225....用队列实现 这是题目的要求,如果使用C语言实现的话,只能自己写一个队列了,这里我就不详细讲解了,具体实现思路在这: http://t.csdnimg.cn/0SiCq 代码如下: typedef...: 在实现这个之前我们需要有一个具体思路,是后进先出,队列是先进后出,那么在插入上是没有区别的,在删除上就需要将对列的尾部删除,那么如何实现对列的尾部删除呢?...1.的定义 题目要求是使用两个队列实现,那么就直接在的定义里面包含两个队列即可。...typedef struct { Que q1; Que q2; } MyStack; 2.的初始化 为malloc一块空间,在使用QueueInit实现两个队列的初始化。

    8610

    (用C语言实现

    要怎么实现呢?使用数组还是用链表? 实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优⼀些。 因为数组在尾上插入数据的代价比较小。...相比于数组实现,链表实现需要额外的内存开销来维护节点之间的指针关系,可能导致内存碎片化。 2.动态内存分配:链表实现需要通过动态内存分配来创建和释放节点。...如果需要在中进行随机访问元素,链表实现可能不太适合,而数组实现更具优势。  1.3顺序表的优缺点: 优点: 1、尾插尾删效率高。 2、下标的随机访问。...STSize(ST* ps); //是否为空 bool STEmpty(ST* ps); 实现的文件:Stack.c #include"Stack.h" void STInit(ST...arr[ps->top - 1]; } int STSize(ST* ps) {     assert(ps);     return ps->top; } 测试文件:text.c

    8710

    C语言实现顺序

    文章目录 顺序的常规操作 定义顺序结构体 初始化顺序 顺序判满 顺序判空 计算顺序的长度 顺序(Push) 顺序(Pop) 顺序各操作测试 源代码 ?...typedef struct SeqStack{ ElemType datas [MAXSIZE]; int top; // 顶指针 }*Stack; 注意:这里 顶指针top,指向的是元素的上一个位置...如果指向元素当前位置,初始化顺序的时候可以把 top = -1; 顶指针top,指向的是元素的上一个位置(初始 top = 0)。...入(Push),,先把 顶指针top 后移 ++ ,后让元素放入中 s -> top++; s -> datas[s -> top] = data; 出(Pop),先取出顶元素,后让 顶指针...源代码 源代码已上传到 GitHub Data-Structure-of-C,欢迎大家下载 C语言实现数据结构

    5.4K20

    用队列实现(C语言版本)

    个人主页: :✨✨✨初阶牛✨✨✨ 强烈推荐优质专栏: C++的世界(持续更新中) 推荐专栏1: C语言初阶 推荐专栏2: C语言进阶 个人信条: 知行合一 前言 在做这个题目之前,应当熟悉和队列这两种数据结构....和队列都是常见的数据结构,它们是基于数组或链表实现的线性数据结构。...的基本操作包括入(push)、出(pop)、查看顶元素(top)和判断是否为空(empty)。 应用场景:实现程序调用的函数堆栈、表达式求值、括号匹配检验等。...一、题目介绍 题目来源于–力扣 题目链接:传送门 请你仅使用两个队列实现一个后入先出(LIFO)的,并支持普通的全部四种操作(push、top、pop 和 empty)。...实现 MyStack 类: void push(int x) 将元素 x 压入顶。 int pop() 移除并返回顶元素。 int top() 返回顶元素。

    17230

    C语言-用实现表达式求值(顺序)

    2.若建立两个一个数字用来存放运算数,一个字符用来存放操作符,是否可行? 首先要肯定这是可行的!...5.存多位数时,一个单元格存一位数字,那我们如何将多位数正确的放入操作数中?...在这里,处理多位数时,提出一种“归并”的思想,首先设一个int X1;用X1=str[i++];读取每一位数字,再设一个int X2=0;通过X2=10*X2+X1;实现将已读取操作数归并到X2。...8.在检测到输入的字符是非法字符时如何给出错误反馈?在检测到输入字符是一个或多个空格时如何自动跳过空格?...evaluateExpression(exp); printf("\n"); printf("%s%d\n",exp,result); return 0; } 执行结果: ---- 参考: 数据结构(C语言第二版

    1.8K10

    C语言实现顺序相关操作

    (stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。 这一端被称为顶,相对地,把另一端称为底。...向一个插入新元素又称作进、入或压,它是把新元素放到顶元素的上面,使之成为新的顶元素; 从一个删除元素又称作出或退,它是把顶元素删除掉,使其相邻的元素成为新的顶元素。...stdbool.h> #define MaxSize 5 typedef struct { int data[MaxSize]; int top; } SqlStack; /** * 初始化...* @return */ _Bool Push(SqlStack *stack) { if ((*stack).top == MaxSize - 1) { printf("已满...\n"); return true; } printf("非空 \n"); return false; } /** * 获取顶元素 * @param stack

    78310

    如何自己实现一个

    最鲜明的特点就是后进先出,一碟盘子就是类似这样的结构,最晚放上去的,可以最先拿出来。本文将介绍的是如何自己实现一个结构。...的操作 的常见操作有出(POP),从中弹出一个元素;入(PUSH),将一个元素压入中,访问顶元素(TOP),判断是否为空等。 实现 是较容易实现的抽象数据结构之一。...本文对两种实现都做介绍。 数组实现 用数组实现是比较容易的。这个时候的其实更像是访问受限的数组,数组可以通过下标访问,查找,插入等,但是只能从顶,或者说数组的末尾进行操作。...我们来看一下数组实现的时候,的操作都是怎么实现的呢?...定义 用数组实现时是很容易定义的,只要定一个固定长度的数组即可,然后使用一个指针或者数组下标标记顶(topOfStack),为空时,它是-1: #define STACK_SIZE 64 /*大小

    75210

    C语言共享

    的操作我相信大家都应该了解了弄懂了, 如果没弄懂希望可以去再去看看相关的资料,我博客中的C语言中缀表达式转后缀表达式中涉及到了一下的基本操作,有兴趣的朋友也可以看看。...所谓共享,就是两个共同使用一块内存空间,其中一个底作为另一个顶,反之亦然。...开始 思路分析 因为两个公用一个空间,假设一个为0#,规定其为空时top[0]==-1;另一个为1#规定其为空时,top[1]==MaxSize; 入时,先确定号是否合法,然后查看是对0#还是...如果出成功返回0;出失败返回-1; 添加适当的头文件,定义一个数据结构, 共享也是,只不过有点特殊,在这里我们还是需要添加适当的头文件和定义恰当的数据结构 #includetop[1] = MaxSize; } 入操作 在入的时候,我们需要选择入的是两个中的哪一个,我们这里用0和1来区分 int Push(SqStack*s, ElemType x, int

    1.2K30

    【数据结构】C语言实现

    C语言实现 前言 大家好,很高兴又和大家见面啦!!!...在上一篇内容中,我们简单介绍了一下如何解决顺序空间不够的方法: 在创建顺序前,提前在空间内容申请一篇足够大的空间; 创建一个动态的链; 当我们使用第一种方式时,如果我们此时需要创建的是两个同类型的顺序...之后我们也是详细的介绍了如何通过C语言实现一个共享。 在今天的内容中,我们将来探讨一下对内存空间的使用更为灵活的链,以及如何通过C语言实现一个。下面我们就一起来看一下吧!!!...既然是单链表,那我们就可以通过StackNode与LinkStack来区分整个链与链的结点,下面我们就来看一下如何通过C语言实现的基本操作; 二、链的初始化 这里我们想要通过不带头结点的单链表来实现一个...,测试结果如下所示: 从结果中我们可以看到,我们成功通过C语言实现了链的初始化到销毁的全部操作。

    25610
    领券