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

C语言共享

的操作我相信大家都应该了解了弄懂了, 如果没弄懂希望可以去再去看看相关的资料,我博客中的C语言中缀表达式转后缀表达式中涉及到了一下的基本操作,有兴趣的朋友也可以看看。...所谓共享,就是两个共同使用一块内存空间,其中一个底作为另一个顶,反之亦然。...开始 思路分析 因为两个公用一个空间,假设一个为0#,规定其为空时top[0]==-1;另一个为1#规定其为空时,top[1]==MaxSize; 入时,先确定号是否合法,然后查看是对0#还是...1#进行操作,入操作和顺序的入操作并无太大不同。...如若入成功则返回0;入失败则返回-1; 出时,先确定号是否合法,然后查看是对0#还是1#进行操作,出操作和顺序的出操作并无太大不同。 选定之后进行出操作。

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

    c语言实现(顺序,链)

    个人主页: :✨✨✨初阶牛✨✨✨ 推荐专栏: C语言进阶 个人信条: 知行合一 本篇简介:>:讲解用c语言实现:“数据结构之"”,分别从"顺序"和"链"的接口讲解....中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压的插入操作叫做/压/入,入数据在顶。 出的删除操作叫做出。...//stack.c SLStackNode* InitStack() { SLStackNode* newnode = (SLStackNode*)malloc(sizeof(SLStackNode)...(ST* ps);//返回顶元素 void STDestory(ST* ps);//的销毁 接口实现区( stack.c) #include "stack.h" //初始化 void InitST...void STDestory(SLStackNode* ps);//的销毁 接口实现区(SLStack.c) #include "SLStack.h" //SLStackNode* InitStack

    29020

    洛谷 || C语言

    题目背景 是计算机中经典的数据结构,简单的说,就是限制在一端进行插入删除操作的线性表。 有两种最重要的操作,即 pop(从顶弹出一个元素)和 push(将一个元素)。...的重要性不言自明,任何一门数据结构的课程都会介绍。宁宁同学在复习的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙。...题目描述 宁宁考虑的是这样一个问题:一个操作数序列1,2,…,n(图示为 1 到 3 的情况), A 的深度大于n。...现在可以进行两种操作, 将一个数,从操作数序列的头端移到的头端(对应数据结构的 push 操作) 将一个数,从的头端移到输出序列的尾端(对应数据结构的 pop 操作) 使用这两种操作,由一个操作数序列就可以得到一系列的输出序列

    1.3K30

    C语言的实现

    因为方便:试想一下我们要判断是否空就只需要判断top是否等于buttom,如果buttom指向底显然就会麻烦许多 下面我们先用C语言来实现一下: 首先我们需要对这个装东西的“盒子”定义,而这个盒子就是...,然后节点可以放在里面(不过实际上的代码是一个概念,只是形象的用了两个结构体表示) 回到上面的话题,定义完了,接下来就是的操作,操作主要有入(push)和出(pop),还有遍历输出,其次就是一些诸如清...出一般有两种:1.让指定数据出2.让top指向的数据出,注意,如果要让指定的数据出,而且如果那个数据在中间,那你就不得不把从top到那个数据的全部节点出,因为是后进先出,而且只允许一段入/出...*n=sk->top; sk->top=n->next; delete n; } 就像上面,另还要注意出需要考虑是否为空,我没有写 至此,一个C语言版本的及其主要操作就完成了,这也是我第一次写结构...,因为我用C++ stack sk; sk.push(5); //..

    3.9K40

    单调总结_和出的算法思想

    单调是一种特殊的,特殊之处在于内的元素都保持一个单调性。...此时我们便可以利用单调在O(n)的复杂度下实现 我们按顺序遍历数组,然后构造一个单调递增 (1). i = 1时,因为空,L[1] = 0,此时再将第一个元素的位置下标1存入中 此时中情况:...(2).i = 2时,因当前3小于顶元素对应的元素5,故将5弹出 此时为空 故L[2] = 0 然后将元素3对应的位置下标2存入中 此时中情况: (3).i = 3时,因当前...7大于顶元素对应的元素3,故 L[3] = S.top() = 2 (顶元素的值) 然后将元素7对应的下标3存入 此时中情况: (4).i = 4时,为保持单调递增的性质,应将顶元素...总结:一个元素向左遍历的第一个比它小的数的位置就是将它插入单调顶元素的值,若为空,则说明不存在这么一个数。

    32330

    (用C语言实现)

    1.1 概念与结构 :⼀种特殊的线性表,其只允许在固定的⼀端进行插入和删除元素操作。进行数据插入和删除操作的⼀端称为顶,另⼀端称为底。...中的数据元素遵守后进先出 LIFO(Last In First Out)的原则。 压的插⼊操作叫做/压/入,入数据在顶。 出的删除操作叫做出。出数据也在顶。...; }ST;//定义的结构 // 初始化 void STInit(ST* ps); // 销毁 void STDestroy(ST* ps); // ⼊ void STPush(ST...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) 顺序各操作测试 源代码 ?...入(Push),先把元素放入中,后让 顶指针top 后移 ++ s -> datas[s -> top] = data; s -> top++; 出(Pop),先让 顶指针(top) 前移...入(Push),,先把 顶指针top 后移 ++ ,后让元素放入中 s -> top++; s -> datas[s -> top] = data; 出(Pop),先取出顶元素,后让 顶指针...(s == NULL){ return FALSE; } return s -> top; } 顺序(Push) /* * 入 * s 顺序 * data 入数据 *...源代码 源代码已上传到 GitHub Data-Structure-of-C,欢迎大家下载 C语言实现数据结构

    5.4K20

    必备 :C语言基础

    在《全的技术设想》中埋下了4种编程语言的伏笔,已经兑现了Javacript,Python和Java, 本想将C/C++一并整理,但涉及面向对象等设计技术,最终还是C 梳理一下,从0到1吧。 ?...数据结构 C语言为用户提供了丰富的数据结构,还允许用户自定义复杂的数据结构。...一个变量在内存中的地址就称为该变量的指针,这是C语言中的精华,下面单独描述。 C语言还提供了十分丰富的运算符,主要有如下34种: 算术:+、-、*、/、++等 关系:>、<、==、!...关于这部分代码对于开发者不可见,属于C标准运行时的一部分。 函数在调用和被调用过程中,都伴随着入和出,因此发挥着重要作用。函数的局部变量、参数、返回值都存在区中。...C语言被一些人誉为“上帝语言”,它几乎奠定了软件产业的基础,还创造了很多其它语言。但是,鉴于水平有限,难以举重若轻,本文中的基础描述只是老码农的碎碎念罢了。

    1.1K30

    【线性表】之(C语言)

    ---- 也是线性表,在逻辑上还是挨着放的。 的概念以及结构 :一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。**进行数据插入和删除操作的一端称为顶,另一端称为底。...**中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压:的插入操作叫做/压/入, 入数据在顶。 出:的删除操作叫做出。 出数据也在顶。...总结: ​ 如果用尾插做顶,用双向链表更好。 ​ 如果用单链表实现,就用头去做顶,这样入和出效率都是O(1)。 ​ 整体来说数组的效率更优一些。...capacity;//的容量——能放几个数据 }Stack; 初始化 如果初识的top给0,意味着top指向顶的元素的下一个,top给-1,top指向顶元素。...void StackPop(Stack* ps) { assert(ps); //如果空了调用top,直接终止程序报错 assert(ps->top > 0); ps->top--; } 返回顶元素

    66410

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

    函数目录: 的基本操作: 创建并初始化(create) 入(push_in) 出(pop_out) 取顶元素(GetTop) 优先级函数(Precede) 求值函数(Operate) 判断操作符函数...若选用数字(整型),能顺利地将任何数字存入中,而在存放操作符的时候,将会转化成ASCII码的形式存入中,故数字既可以存取多位数字,又能存取操作符,所以我选择的是数字。...但是建立两个不同类型的,需要在代码中将的基本操作函数(建立,初始化,入,出,取顶元素)写两遍,然后在存取操作数和运算符的时候分别调用对应的操作,过程过于麻烦,代码也过于繁琐,不如数字来的简洁明了...\n"); exit(0); } } } int In(char c) //判断是否为运算符,是运算符返回1,若不是返回0 { switch(c)...evaluateExpression(exp); printf("\n"); printf("%s%d\n",exp,result); return 0; } 执行结果: ---- 参考: 数据结构(C语言第二版

    1.8K10

    C语言 | C++ 基础溢出及保护机制

    以下是正文 ---- 引言 如果你学的第一门程序语言C语言,那么下面这段程序很可能是你写出来的第一个有完整的 “输入---处理---输出” 流程的程序: #include int...但可能从来没有人告诉你,什么是溢出、溢出有什么危害、黑客们可以利用溢出来进行什么样的攻击,还有你最想知道的,他们是如何利用溢出来实现攻击的,以及如何防护他们的攻击。...熟练使用C语言、熟悉gcc编译器以及Linux操作系统 2. 熟悉x86汇编,熟练使用mov, push, pop, jmp, call, ret, add, sub这几个常用命令 3....上一节中gcc victim.c -o victim -zexecstack -g,其中的-zexecstack选项就是告诉操作系统允许本程序的可执行。...让我们打开保护开关重新编译一下victim.c: $ gcc victim.c -o victim_fsp -g -fstack-protector$ objdump -d victim_fsp -M

    4.9K88

    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

    数据结构——(C语言版)

    准备工作:本人习惯将文件放在test.c、SeqList.c、SeqList.h三个文件中来实现,其中test.c用来放主函数,SeqList.c用来放调用的函数,SeqList.h用来放头文件和函数声明...队列中的数据是按照先进后出的顺序的,也就是说先进去的数字后出来 因为的这种性质,所以我们用顺序表来实现比链表方便很多,顺序表就可以实现尾插尾出,所以我们一般就采用顺序表来实现 的节点结构 队列采用的顺序表的结构...这一步在下面有用到,例如当删除顶元素时,如果顶元素为空就无法操作,所以需要判断顶元素是否为空 //判断顶元素是否为空 bool STEmpty(ST* pst) { assert(pst);...bool STEmpty(ST* pst); //找顶元素 STDataType STTop(ST* pst); //中元素个数 STDataType STSize(ST* pst); test.c...("%d ", STTop(&st)); STPop(&st); } STDestroy(&st); } int main() { test(); return 0; } SeqList.c

    7810
    领券