首页
学习
活动
专区
工具
TVP
发布
您找到你想要的搜索结果了吗?
是的
没有找到

线性表】之栈(C语言)

缺点:1.中间或前面的插入删除时间复杂度O(N)。 ​ 2.增容的代价比较大 链表(带头双向循环): ​ 缺点: ​ 以借点为单位存储,不支持随机访问。 ​...优点: ​ 1.任意位置插入删除时间复杂度为O(1) ​ 2.没有增容消耗,按需申请结点空间,不用了直接释放。 ---- 栈 栈也是线性表,在逻辑上还是挨着放的。...栈的概念以及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。**进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。...压栈:栈的插入操作叫做进栈/压栈/入栈, 入数据在栈顶。 出栈:栈的删除操作叫做出栈。 出数据也在栈顶。...(顺序表——【线性表】之顺序表_半生瓜のblog-CSDN博客) 链表实现 出数据得找到前一个,这样的话用双向链表更好一些。

62410

C语言线性表(实现线性表里面的函数)

,它的长度可以根据需要增长和缩短,即对线性表的数据元素不仅可以进行访问,还可以进行插入和删除等。...代表数组 cur_e代表指定元素 &next_ e代表指定元素的下一个元素 :给定元素获取其后一个元素 ListInsert(&L, i, e)&L你可以想象成一个容器(数组) i指定位置 e插入的元素是啥...:将元素插入链表中指定位置 ListDelete(&L, i, &e)&L你可以想象成一个容器(数组) i指定元素 &e删除的元素是啥?...:从链表中指定位置删除元素 ListTraverse(L, visit()) 遍历数组 :遍历元素 简单线性表--C语言实现 线性表组成类型:int数组*/ /*************...:将元素插入链表中指定位置 { if(i = 0)//为什么(i <= count,因为插入的位置要+1啊 { int k = 0; for(k = count

50430

线性表】之顺序表(C语言)

线性表】之顺序表 线性表 线性表(linear list)是n个具有相同特性元素的有限序列 。...线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就说是连续的一条直线。...但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。 顺序表 它是最简单的数据结构,也是最常用的数据结构——他的作用就是将数据存起来。...有效的数据个数等于空间容量的总大小 if (ps->size == ps->capacity) { //要注意如果满了,就进行扩容,在原来基础上*2,但是开始的空间是0, //0*2还是0,所以开始插入的时候要加一个判断...while (start size) { ps->arry[start - 1] = ps->arry[start]; start++; } ps->size--; } 在指定位置插入数据

58110

C语言实现线性表的顺序表示

文章目录 线性表的常规操作 定义顺序表结构体 初始化顺序表 顺序表的销毁 清空顺序表 顺序表判空 求顺序表的长度 顺序表的遍历 顺序表的插入​(重点) 算法实现 表尾插入 表中插入 顺序表的删除​(重点...; // 求线性表的长度 void Travel(); // 遍历线性表 int ListInsert(); // 向线性表插入元素 int ListDelete(); // 从线性表删除元素...int GetElem(); // 找到线性表指定位置的元素值 int LocateElem(); // 找到线性表指定元素值的位置 定义顺序表结构体 顺序表是有插入和删除操作的,所以顺序表的长度是变化的...,而 C语言中的数组是定长 的,那么该如何用数组实现顺序表呢?...欢迎大家下载 C语言实现数据结构

2K62

C语言】排序之插入排序

插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。...插入排序在实现上,通常采用in-place排序,因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 一般来说,插入排序都采用in-place在数组上实现。...该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素(已排序)大于新元素,将该元素移到下一位置 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 将新元素插入到该位置后...该算法可以认为是插入排序的一个变种,称为二分查找插入排序。

1.3K30

线性表之顺序表(C语言实现)

一、线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。...线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串等… 线性表在逻辑上是线性结构,也就说是连续的一条直线。...但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储....顺序表一般分为;两种:1.静态顺序表 2.动态顺序表 静态顺序表实际作用不大,本篇主要讲解动态顺序表. 2.1 静态顺序表简单介绍: 静态顺表是指顺序表的容量是固定的,如果看过c语言实现通讯录的友友们...SL) { assert(SL); free(SL->data); SL->data = NULL; SL->size = 0; SL->capacity = 0; } 主测试区(test.c)

81930

C语言 | 直接插入排序

例99:C语言实现直接插入排序 。 解题思路:直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。...C语言源代码演示: #include//头文件  int main()//主函数  {   void insort(int post[],int n);//函数声明    int array...    {       post[j+1]=post[j]; //数据右移       j--; //移向左边一个未比较的数     }      post[j+1]=post[0]; //在确定的位置插入...以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C语言学习路线    C语言开发工具 VC6.0、Devc++、VS2019使用教程...更多案例可以go公众号:C语言入门到精通

59652

C语言 | 直接插入排序

“要成为绝世高手,并非一朝一夕,除非是天生武学奇才,但是这种人…万中无一” ——包租婆 这道理放在C语言学习上也一并受用。...在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。 那么如何学习呢?当然是每天都练习一道C语言题目!! ? 作者 闫小林 白天搬砖,晚上做梦。...例99:C语言实现直接插入排序 。 解题思路:直接插入排序是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。...C语言源代码演示: #include//头文件 int main()//主函数 { void insort(int post[],int n);//函数声明 int array...{ post[j+1]=post[j]; //数据右移 j--; //移向左边一个未比较的数 } post[j+1]=post[0]; //在确定的位置插入

53852

【数据结构(C语言版)系列一】 线性表

线性表——顺序存储结构 线性表的顺序的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素。 假设线性表的每个元素需占用l个存储单元,并一所占的第一个单元的存储地址作为数据元素的存储位置。...的存储位置为:  LOC(ai) = LOC(a1) + (i-1) * l LOC(a1)指线性表中的第一个数据元素a1的存储位置,通常称做线性表的起始位置或基地址。...只要确定了存储线性表的起始位置,线性表中任一数据元素都可随机存取,所以线性表的顺序存储结构是一种随机存取的存储结构。 若表长为n,为删除或插入元素的时间复杂度为O(n)。...单链表顺序存储结构如下图: 线性表——链式存储结构 链式存储删除与插入更方便,不用来回移动大量元素。...这种存储结构仍需要预先分配一个较大的空间,但在作线性表插入和删除操作时不需要移动元素,仅需修改指针,故仍具有链式存储结构的主要优点。

2.1K30

线性表之链表---初始化,插入,删除

与之前链表不同,这里的链表可以适合不同的数据类型存储 插入也有两种写法 写法1:注意curNode指针的移动位置,不要让他在等于curNode=NULL后还要插入数据 ? 写法2: ?...指向的堆区开辟内存里面存放的数据类型,也就无法通过强制类型转换对堆区的链表结构体数据进行修改 LinkList list = init_LinkList(); int a = 5; int b = 10; int c...= 20; insert_LinkList(list, 0,&a); insert_LinkList(list, 0, &b); insert_LinkList(list, 0, &c); foreach_LinkList...指向的堆区开辟内存里面存放的数据类型,也就无法通过强制类型转换对堆区的链表结构体数据进行修改 LinkList list = init_LinkList(); int a = 5; int b = 10; int c...int d = 30; insert_LinkList(list, 0,&a); insert_LinkList(list, 0, &b); insert_LinkList(list, 0, &c)

38440
领券