[计算机软件及应用]数据结构 课件 单链表
- 格式:ppt
- 大小:213.00 KB
- 文档页数:34
数据结构的概念:数据的逻辑结构+ 数据的存储结构+ 数据的操作;数据的数值:=====》数据===》数值型数据整形浮点数ASCII非数值型数据图片声音视频字符=====》数据元素=====》基本项组成(字段,域,属性)的记录。
数据的结构:逻辑结构----》线性结构(线性表,栈,队列)----》顺序结构----》链式结构----》非线性结构(树,二叉树,图)----》顺序结构----》链式结构存储结构-----》顺序存储-----》链式存储-----》索引存储-----》哈希存储==散列存储数据的操作:增删改查DS ====》数据结构===》DS = (D,R);数据结构中算法:1、定义:有穷规则的有序集合。
2、特性:有穷性确定性输入输出3、算法效率的衡量时间复杂度计算===》算法中可执行依据的频度之和,记为:T(n)。
是时间的一种估计值不是准确值。
计算结果的分析:1 将最终结果的多项式中常数项去掉2 只保留所有多项式中最高阶的项3 最后的最高阶项要去掉其常数项时间复杂度的量级关系:常量阶====》对数阶===》线性阶===》线性对数阶====》平方阶===》立方阶===》指数阶以上关系可以根据曲线图来判断算法对时间复杂度的要求空间复杂度计算====》算法执行过程中所占用的存储空间的量级,记为:D(n)。
计算方法是在运行过程中申请的动态内存的量级计算。
/////////////////////////////////////////////////////////////////////////////////////////////////线性表顺序存储====》顺序表(数组)链式存储====》单链表特征:对于非空表,a0是表头没有前驱。
an-1 是表尾没有后继ai的每个元素都有一个直接前驱和直接后继基本操作:创建表=====》增加元素====》删除元素====》改变元素值====》查询元素1、顺序表的操作1.1 创建顺序表=====》定义个指定类型的数组====》int a[100] ={0};#define N 10typedef int datatype;typedef struct{datatype data[N]; ///表的存储空间int last; ///表尾下标,表示当前顺序表的最后存储的位置}sqlist,*sqlink; /// sqlist 表结构类型sqlink 表结构指针sqlink = sqlist *sqlist sq; ////栈区sqlink psq = (sqlink)malloc(sizeof(sqlist));///堆区1.2 增加顺序表元素操作(从头开始增加,插入)////从头增加sq.data[st] = values;st++;///插入void insert(L, x,i);====>L 就是顺序表,x 要插入的数据= values, i是要插入的位置{///防边界处理for(j=st;j>i;j--){sq.data[j] = sq.data[j-1];}sq.data[i] = x;st++;}1.3 删除顺序表操作(从尾部删除,从中间位置删除)void delete(L,i) ====>L 就是要删除的顺序表,i 要删除的位置{///防边界处理for(j=i;j<st;j++){sq.data[j] = sq.data[j+1];}st--;}1.4 改变顺序表中的值void change(L,x,i) ////i 是数组元素的下标{sq.data[i] = x;}void change_vlue(L ,x1,x2) ////根据元素的值修改{for(j=0;j<st;j++){if(sq.data[j] == x1)sq.data[j] = x2;}}1.5 查询顺序表中的值void select(L,i){printf("%d \n",sq.data[i]);}1.6 判断表示空,还是满。
数据结构单链表单链表是一种常见的数据结构,用于存储数据元素之间的线性关系。
本文将介绍单链表的定义、基本操作、常见问题以及优缺点。
⒈定义单链表是由一系列节点组成的数据结构,每个节点包含了一个数据元素和一个指向下一个节点的指针。
⒉基本操作⑴创建链表:通过动态分配内存空间创建一个链表,并将其头指针指向第一个节点。
⑵插入节点:插入一个新节点到链表的指定位置,需要更新相关节点的指针。
⑶删除节点:删除链表中的一个指定节点,需要更新相关节点的指针和释放内存空间。
⑷遍历链表:按顺序访问链表中的每个节点,并对其进行相应操作。
⑸查找节点:在链表中查找指定值的节点,并返回其位置或其他信息。
⒊常见问题⑴求链表的长度:遍历整个链表,并将节点计数即可获取链表的长度。
⑵反转链表:通过修改节点之间的指针关系反转链表的顺序。
⑶判断链表是否有环:使用快慢指针法,若两个指针相遇则链表有环。
⑷合并两个有序链表:比较两个链表的节点值,逐个合并到一个新链表中。
⑸删除链表中重复的元素:遍历链表,对相邻的节点进行比较,若值相同则删除后一个节点。
⒋优缺点⑴优点:插入和删除节点的时间复杂度为O(1),只需要改变指针指向。
链表大小可以动态调整。
⑵缺点:访问节点的时间复杂度为O(n),需要从头节点开始遍历整个链表。
需要额外的空间用于存储指针。
附件:- 单链表的示例代码(见附件1)- 单链表的应用实例(见附件2)法律名词及注释:⒈数据结构:指数据对象中数据元素之间的关系,包括逻辑结构和物理结构。
⒉单链表:一种线性链式存储结构,每个节点包含数据元素和指向下一个节点的指针。
⒊节点:链表中的一个元素,包含数据元素和指针。
⒋头指针:指向链表中第一个节点的指针。
⒌快慢指针法:一种用于解决链表问题的常用技巧,通过设置两个不同速度的指针来判断是否存在环。