首页
学习
活动
专区
工具
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;     } } /**  * 删除线性表

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

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

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

48410

线性表】之栈(C语言)

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

63710

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

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

59310

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

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

2.1K30

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

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

2K62

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

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

82930

C 语言】文件操作 ( 学生管理系统 | 插入数据 | 查询数据 | 删除数据 )

文章目录 一、学生管理系统 1、插入数据 2、查询数据 3、删除数据 二、完整代码 一、学生管理系统 ---- 实现一个简易学生管理系统 , 验证文件操作 ; 1、插入数据 从命令行接收数据 , 放入结构体成员中...将所有的学生数据一次性全部读取出来 ; 然后逐个遍历 , 使用 结构体指针 , 逐个遍历上述全部数据 ; 遍历的同时 , 写出数据 , 如果学生的名字不是要删除的名字 , 则重新写出到文件中 , 否则数据丢弃..., 这样就实现了数据删除操作 ; /* * 删除学生 */ int delete() { // 打开学生信息文件 FILE *p = fopen("student.dat", "r...for(i = 0; i < n; i++) { // 学生数据不是要删除数据, 才能写出到文件中 if (strcmp(s[i].name, name...可执行文件 ; gcc main.c -o student 输入错误参数 : 如果输入参数小于 2 个 , 则提示参数信息 ; 插入数据 : 查询数据 : 删除数据 :

78310

数据结构初步(三)- 线性表之顺序表的分析与C语言实现

前言 本节将要介绍线性表里的顺序表,从简单的数据结构开始,慢慢深入。 ---- 1. 线性表 概念 线性表是n个具有相同特性的数据元素的有限序列。 线性表时一种在实际中广泛使用的数据结构。...线性表的逻辑结构是线性结构,也就是说是连续的。 线性表的物理结构不一定是连续的,在实际储存时是以数组和链式的形式储存的。...---- C语言代码实现 头文件SeqList.h 进行头文件的包含、动态顺序表结构体的声明、函数声明、#define定义 #pragma once #include #include...在指定位置处(下标)删除数据 //指定pos位置删除数据x void SLErase(SL* psl, size_t pos) { assert(psl); assert(pos size...* psl) { SLErase(psl, psl->size - 1); } //头删 void SLPopFront(SL* psl) { SLErase(psl, 0); } ---- 完整C语言代码实现

43610

2-1 线性表之顺序表 及其C语言实现

2-1 线性表之顺序表 0、数据结构大致包含以下几种存储结构: 线性表:还可细分为顺序表、链表、栈和队列; 树结构:包括普通树,二叉树,线索二叉树等; 图存储结构; 1、线性表 线性表,全名为线性存储结构...线性表主要的基本操作有以下几种: ①Initiate(L):初始化,设定一个空的线性表。 ②Length(L):对给定的线性表,函数返回值为其数据元素的个数。...⑤Insert(L, i, x):插入,对给定的线性表,在第i个位置插入新元素x,(i要在长度范围内) ⑥Delete(L,i):删除,对给定的线性表,按照索引号i 删除对应元素,(i 要在长度范围内...线性表存储数据可细分为以下 2 种: ① 将数据依次存储在连续的整块物理空间中,这种存储结构称为顺序存储结构(简称顺序表); ② 数据分散的存储在物理空间中,通过一根线保存着它们之间的逻辑关系,这种存储结构称为链式存储结构...顺序表可以有两种实现方式: 静态顺序表 :一般使用数组来实现, 动态顺序表:一般使用动态申请的内存来实现,比如C语言中是malloc,C++中用new ①静态顺序表的程序实现: 头文件 sq_list_

1.6K30

C语言--数据存储

目录 1、数据类型介绍 1.1、类型的基本归类 2、整形在内存中的存储 2.1、原码、反码、补码 2.2 大小端 2.3 练习题 3....原来,在计算机中,内存存储数据,采用的是字节序的大小端存储模式。 什么是大小端?...大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址 中; 小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地 址中。...但是在C语言中除了8 bit的char之外,还有16 bit的short型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节...我们常用的 X86 结构是小端模式,而 KEIL C51 则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。 2.3 练习题 3.

1.7K20
领券