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

C语言实现线性表

线性表是最简单的数据结构之一, 一个线性表是n个具有相同特性的数据元素的有限序列。...线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。...比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了首位结点)。...(sqList.c文件): // // Created by tioncico on 19-4-24. // #include "sqList.h" /**  * 初始化线性表  * @param ...        return -1;     }else{         *priorElem = list.elem[i+1];         return 0;     } } /**  * 删除该线性表

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

    【线性表】之队列(C语言)

    队列的概念 队列只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的FIFO(First in First Out)。 入队列:进行插入操作的一端称为队尾。...出队列:进行删除操作的一端称为队头。 同样可以使用链表或者数组 数组:不是适合,队头出数据需要挪动数据。 链表:适合单链表,单链表头删效率很高。...pq) { assert(pq); //定义一个新结点 QueueNode* cur = pq->head; while (cur) { //依次保存下一个结点,然后删除这个结点...pq->tail = newnode; } } 队头出 void QueuePop(Queue* pq) { assert(pq); assert(pq->head);//队列是不等于空的...QueueEmpty(&pq)) { //取队头的数据然后删除 printf("%d ", QueueFront(&pq)); QueuePop(&pq); } QueueDestory

    52310

    【线性表】之栈(C语言)

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

    68210

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

    【线性表】之顺序表 线性表 线性表(linear list)是n个具有相同特性元素的有限序列 。...线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就说是连续的一条直线。...但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。 顺序表 它是最简单的数据结构,也是最常用的数据结构——他的作用就是将数据存起来。...//ps->arry[ps->size - 1] = 0; ps->size--; //可以复用删除,头删、头插、尾插、同理 //SeqListErase(ps,ps->size); } 头删 void...void SeqListErase(SeqList* ps, int pos) { assert(pos size); //被删除元素后面的位置 int start = pos +

    63110

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

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

    2.1K62

    c语言数据结构与算法--简单实现线性表(顺序表+链表)的插入与删除

    线性表的元素之间存在一对一的线性关系,即除首元素外,每个元素有且只有一个前驱元素,除尾元素外,每个元素有且只有一个后继元素。线性表可以通过顺序存储或链式存储来实现。...线性表的基本操作包括初始化、创建、增加、删除和查找等。 顺序表和链表是线性表的两种实现方式,都是用来存储逻辑关系为“一对一”的数据。...它们的相同点是:都是线性表结构;元素逻辑存储上是连续的;每个元素都有唯一的前驱和唯一的后继。...线性表 线性表的顺序表示是指用一组地址连续的存储单元依次存储线性表的数据元素。...当我们要在线性表的顺序存储结构上的第 i 个位置上插入一个元素时,必须先将 线性表第 i 个元素之后的所有元素依次后移一个位置,以便腾空一个位置,再把新元素插入到该位置。

    11010

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

    一、线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。...线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串等… 线性表在逻辑上是线性结构,也就说是连续的一条直线。...但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储....顺序表一般分为;两种:1.静态顺序表 2.动态顺序表 静态顺序表实际作用不大,本篇主要讲解动态顺序表. 2.1 静态顺序表简单介绍: 静态顺表是指顺序表的容量是固定的,如果看过c语言实现通讯录的友友们...顺序表的尾删操作没有必要真的将最后一个数据删除,只需要调整size的值,那样我们就不能访问到已经删除的元素,这也就等于删除了.

    88630

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

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

    2.2K30

    【C语言刷题系列】删除公共元素

    一、问题描述 二、解题思路 第一种方法:创建一个临时数组,将字符串1中的每一个字符,与字符串2中的每一个字符分别进行比较,如果某个字符不是公共元素,则将其拷贝到临时数组中 第二种方法:因为题目没有要求处理后的数据...所以每找到一个不需要删除的元素时,直接打印该字符也可以解决问题 注意事项:因为字符串中可能包含空格字符,所以使用scanf不能正确完成字符串读取,建议使用gets函数或fgets函数 关于scanf函数的更多详细介绍...【C语言基础篇】scanf()函数详解-CSDN博客 三、源代码实现 解决方案一:拷贝到临时数组 #include int main() { char arr1[101] = { 0...if (*a == *b) { flag = 0; break; } } if (flag == 1)//如果不是公共元素,将其打印到屏幕 printf("%c"..., *a); } return 0; } 个人主页: 倔强的石头的博客

    8910

    Leetcode—— 删除排序数组中的重复项——C语言

    1.题目 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。...考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过: 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。...nums 的其余元素与 nums 的大小不重要。 返回 k 。...nums[dst++]; } else { ++dst; } } return src+1;//返回删除重复项后数组长度...,则在数组对应的位置写入即可  利用k的值代表有多少个不一样的项,前后比较,每遇到不同的项,(k+1)即为后面不同项在nums的对应下标,将后者直接读入nums中, 注意:由于每次写入的都是后面的项,最后返回时加上第一项

    8510

    1-5 线性表元素的区间删除 (20 分)

    本文链接:https://blog.csdn.net/shiliang97/article/details/100141960 1-5 线性表元素的区间删除 (20 分) 给定一个顺序存储的线性表,请设计一个函数删除所有值大于...; typedef struct LNode *List; struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置...*/ }; L是用户传入的一个线性表,其中ElementType元素可以通过>、==、删除元素的值域的下、上界。...函数Delete应将Data[]中所有值大于minD而且小于maxD的元素删除,同时保证表中剩余元素保持顺序存储,并且相对位置不变,最后返回删除后的表。...; typedef struct LNode *List; struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置

    2.1K40
    领券