线性表:由同类型数据元素构成的有序序列的线性结构

编译环境:Dev-C++

结构实现:

struct LNode {ElementType Data[MAXSIZE];int last;
};

主要操作函数:

List MakeEmpty();//初始化一个空表ElementType FindKth(int k, List L);//根据位序k,返回相应的元素int Find(ElementType x, List L);//在线性表中查找x的第一次出现的位置void Insert(ElementType x, int i, List L);//在位序i前新插入一个新元素xvoid Delete(int i, List L);//删除指定位序i的元素int Length(List L);//返回线性表L的长度nvoid Show(List L);//输出线性表中的所有数据void Destroy(List L);//销毁线性表

测试程序以及相关函数的实现:

#include<stdio.h>
#include<stdlib.h>#define MAXSIZE 20
typedef int ElementType;struct LNode {ElementType Data[MAXSIZE];int last;
};typedef struct LNode *List;List MakeEmpty();//初始化一个空表ElementType FindKth(int k, List L);//根据位序k,返回相应的元素int Find(ElementType x, List L);//在线性表中查找x的第一次出现的位置void Insert(ElementType x, int i, List L);//在位序i前新插入一个新元素xvoid Delete(int i, List L);//删除指定位序i的元素int Length(List L);//返回线性表L的长度nvoid Show(List L);//输出线性表中的所有数据void Destroy(List L);//销毁线性表int main() {int Num;int i;ElementType x;List L;printf("开始测试\n");printf("初始化一个空表...\n");L = MakeEmpty();if (L) {printf("初始化成功...\n");}printf("为线性表补充数据...\n");scanf("%d", &Num);for (i = 0; i < Num; i++) {scanf("%d", &x);L->Data[i]=x;L->last++;}printf("线性表数据:\n");Show(L);printf("查找数据...\n");printf("第二个数据是:%d\n", FindKth(2,L));printf("数字3的位置是:%d", Find(3, L));printf("删除第四个数据...\n");Delete(4, L);printf("线性表数据:\n");Show(L);printf("在位序四之前插入数据100:...\n");Insert(100,4,L);Show(L);printf("销毁线性表:...\n");Destroy(L);system("pause");return 0;
}List MakeEmpty() {List L;L = (List)malloc(sizeof(struct LNode));//if (L = NULL) {//printf("申请内存出错!");//exit(0);//}L->last = -1;return L;
}ElementType FindKth(int k, List L) {if (k<1 || k>L->last+1) {printf("位序不正确!\n");return -1;}else {return L->Data[k - 1];}
}int Find(ElementType x, List L) {int i = 0;while (i <= L->last&&L->Data[i] != x)i++;if (i > L->last) {printf("未找到相关数据\n");return -1;}return i;
}void Insert(ElementType x, int i, List L) {int j;if (L->last == MAXSIZE - 1) {printf("表满!\n");return;}else if (i < 1 || i>L->last + 2) {printf("位序不合法!\n");return;}for (j = L->last; j >=i - 1; j--) {L->Data[j + 1] = L->Data[j];}L->Data[i - 1] = x;L->last++;
}void Delete(int i, List L) {int j;if (L->last < 0) {printf("空表!");return;}else if (i<1 || i>L->last + 1) {printf("位序不合法!\n");return;}for (j = i - 1; j < L->last; j++) {L->Data[j] = L->Data[j + 1];}L->last--;
}int Length(List L) {return L->last + 1;
}void Show(List L) {int i;printf("线性表长度为:%d\n", Length(L));for (i = 0; i <= L->last; i++) {printf("%d:%d\n", i, L->Data[i]);}
}void Destroy(List L) {L->last = -1;free(L);
}

数据结构--数组实现线性表相关推荐

  1. 数据结构 (一) ----- 数据结构基本概念基于数组实现线性表

    相关文章: <数据结构 (一) ----- 数据结构基本概念&基于数组实现线性表> 文章目录 数据结构基本概念 一.逻辑结构 二.存储结构 三.数据结构定义 四.数据结构的通用的几 ...

  2. 王道408数据结构——第二章 线性表

    文章目录 一.线性表的定义和基本操作 线性表 顺序表 1.插入操作 2.删除操作 3.按值查找(顺序查找) 二.单链表 1. 头插法 2. 尾插法 3. 按序号查找 4. 按值查找 5. 插入结点 6 ...

  3. 数据结构数组计算机中的应用,2018考研计算机:数据结构数组和广义表复习重点...

    2018考研计算机:数据结构数组和广义表复习重点 2017-08-17 16:00 | 考研集训营 <数据结构(C语言版)>复习重点在二.三.六.七.九.十章,考试内容两大类:概念,算法, ...

  4. Java版数据结构与算法——线性表

    *************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如 ...

  5. 数据结构复习题(线性表)

    数据结构复习题(线性表) 线性表 选择题 填空题 判断题 解答题 顺序表的插入和删除 单链表的插入与删除,创建 线性表 选择题 用单链表方式存储的线性表,存储每个节点需要两个域,一个是数据域,另一个是 ...

  6. 算法与数据结构(一):线性表(C++实现)

    文章目录 算法与数据结构(一):线性表(C++实现) 头文件定义线性表类的成员变量和成员函数 头文件类成员函数的实现 主函数 参考:算法分析与设计(C++描述) 石志国.刘冀伟.姚亦飞编著 算法与数据 ...

  7. 大话西游之王道考研数据结构第一讲---线性表的顺序表示

    大话西游之王道考研数据结构第一讲---线性表的顺序表示 写在前面的话 王道考研数据结构是一本非常好的书,本系列所有的内容是按照其书进行讲述的,所以您可以以那本书作为主要内容,这个做参考. 大学时候,在 ...

  8. C语言数据结构-第二章线性表-电大

    第二章线性表--内容简介 本章将进入线性结构的学习. 线性结构是最简单.最常用的一种数据结构. 本章将学习线性表的定义.顺序和链式两种存储方式及相应存储结构上的运算实现.通过典型示例训练,掌握线性表的 ...

  9. 【数据结构】除去线性表中的重复数字

    题目:写一个算法将单链表中值重复的结点删除,使所得的结果表中各结点值均不相同. 刚看到这个题目给我第一个思路是冒泡排序,可以利用冒泡排序的两层循环找出相同的结点,然后free掉.第一层循环是控制循环的 ...

最新文章

  1. 理解计算机视觉中的损失函数
  2. semantic ui框架学习笔记三
  3. 注重经营管理谋定市场开发-农业大健康·台湾:有机农业借鉴
  4. IOS开发基础之手势解锁项目案例
  5. 年薪50W不是梦,100天掌握BAT前端中高级工程师必备技能
  6. 抹掉Scala的糖衣(14) -- Update Method
  7. matlab解决无约束优化问题
  8. 读书笔记∣世界是数字的
  9. url安全处理函数+php,php常用的url处理函数汇总
  10. PAip.英文翻译引擎在项目开发上的作用
  11. 【正则】常用正则公式
  12. [Maven]讲讲它的构建生命周期和拉取 jar 包流程
  13. 作为一个iOS开发者,应该继续钻研SwiftUI还是尝试接触Flutter了呢?
  14. (转载)小米9开发者选项在哪里怎么打开
  15. ADI公司高速PCB布板指南
  16. 【Bandit Algorithms学习笔记】UCB算法的理论证明
  17. win2003服务器允许下载.exe文件的方法
  18. 如何让店铺快速靠前排名
  19. BTA | 陈建闽(阿德):Token的分散过程,一定要基于场景
  20. x86服务器虚拟化程度,X86服务器虚拟化之IBM企业级X架构

热门文章

  1. php mysql插入的数据有引号_php – 由于’引号’的不同,数据没有插入到mysql数据库中...
  2. 有什么用_app用什么软件编写
  3. mysql 触发器示例_MySQL触发器示例
  4. matlab pca可视化,利用Matlab实现PCA demo展示
  5. 实时监听input输入框value的变化:
  6. Vuex的第一次接触
  7. 初学servlet之使用web.xml配置
  8. Web 开发中应用 HTML5 技术的10个实例教程
  9. [译] SpaceAce 了解一下,一个新的前端状态管理库
  10. 图的顺序存储(邻接矩阵存储)【摘录自严长生老师的网站】