线性表——顺序表和链表
数据结构线性表部分
作业写不完的卑微小cookie
你连夜都不熬,那你熬什么,奥利给吗?
展开
-
单链表的插入和删除(带头结点与不带头结点)
单链表的插入和删除一、思维导图二、按位序插入①带头结点//在第i个位置插入元素e(带头结点)typedef struct LNode{ Elemtype data; struct LNode *next;}LNode,*LinkList;bool ListInsert(LinkList &L,int i,Elemtype e){ if(i<1) return false; LNode *p;//指针p指向当前扫描到的结点 int j=0;//当前p指向的是第几个结原创 2020-07-30 11:31:09 · 7459 阅读 · 7 评论 -
数据结构——线性表知识思维导图
此博客主要是线性表部分的知识思维导图便于对线性表这一章节的知识在脑中形成一个知识体系具体重要代码实现可以点击???? 传送门一、线性表的定义和基本操作二、顺序表的定义三、顺序表的插入删除四、顺序表的查找五、单链表的定义六、单链表的插入与删除七、单链表的查找与建立八、双链表...原创 2020-07-30 10:30:39 · 3037 阅读 · 0 评论 -
数据结构——线性表相关重要知识点说明
数据结构——线性表相关重要知识点说明1.引用类型作形参的三点说明:(1)传递引用给函数与传递指针的效果是一样的,形参变化实参也发生变化。(2)引用类型作形参,在内存中并没有产生实参的副本,它直接对实参操作;而- -般变量作参数,形参与实参就占用不同的存储单元,所以形参变量的值是实参变量的副本。因此,当参数传递的数据量较大时,用引用比用一般变量传递参数的时间和空间效率都好。(3)指针参数虽然也能达到与使用引用的效果,但在被调函数中需要重复使用“*指针”变量名”的形式进行运算,这很容易产生错误且程序的阅原创 2020-07-25 15:56:25 · 1363 阅读 · 0 评论 -
数据结构——线性表相关算法题
一、【问题描述】1.设顺序表用数组A[ ]表示,表中元素存储在数组下标0~m+n-1的范围内,前m个元素递增有序,后n个元素也递增有序,设计一个算法,使得整个顺序表有序。(1)给出算法的基本设计思想。(2)根据设计思想,采用C或C++语言描述算法,并在关键之处给出注释。(3)说明你所设计的算法的时间复杂度和空间复杂度。2.已知递增有序的单链表A、B (A、B中元素个数分别为m、n,且A、B都带有头结点)分别存储了一个集合,请设计算法,以求出两个集合A和B的差集A-B (仅由在A中出现而不在B中出现原创 2020-07-24 17:05:14 · 1154 阅读 · 0 评论 -
单链表的操作——查找链表C(带头结点)中是否存在一个值为x的结点,若存在,则删除该结点并返回1,否则返回0
一、【问题描述】查找链表C(带头结点)中是否存在一个值为x的结点,若存在,则删除该结点并返回1,否则返回0二、【问题分析】对于本题需要解决两个问题:一个是要找到值为x的结点,另一个是将找到的结点删除。即链表中结点的查找。为了实现查找,定义一个结点指针变量p,让它沿着链表一直走到表尾, 每遇到一个新结点就检测其值是否为x,是则证明找到,不是则继续检测下一个结点,当找到值为x的结点后就删除该结点。三、【问题解答】Talk is cheap,show you the code:...原创 2020-07-24 08:55:02 · 3481 阅读 · 0 评论 -
单链表的操作——A 和B是两个单链表(带表头结点),其中元素递增有序。设计一个算法,将A和B归 并成一个按元素值非递减有序的链表C, C由A和B中的结点组成。
一、【问题描述】A 和B是两个单链表(带表头结点),其中元素递增有序。设计一个算法,将A和B归并成一个按元素值非递减有序的链表C, C由A和B中的结点组成。二、【问题分析】已知A、B中的元素递增有序,要使归并后的C中元素依然有序,可以从A、B中挑出最小的元素插入C的尾部,这样当A. B中的所有元素都插入C中时,C - -定是递增有序的。哪一个元素是A、B中最小的元素呢?很明显,由于A、B是递增的,因此A中的最小元素是其开始结点中的元素,B也一样。只需从A. B的开始结点中选出一个较小的来插入C的尾部即原创 2020-07-23 18:30:10 · 4875 阅读 · 3 评论 -
顺序表的操作例题——已知一个顺序表L, 其中的元素递增有序排列,设计一个算法,插入一个元素x (x为int 后保持该顺序表仍然递增有序排列(假设插入操作总能成功)。
一、【题目描述】:已知一个顺序表L, 其中的元素递增有序排列,设计一个算法,插入一个元素x (x为int后保持该顺序表仍然递增有序排列(假设插入操作总能成功)。二、【题目分析】:由题干可知,解决本题需完成两个操作:1)找出可以让顺序表保持有序的插入位置。2)将步骤1)中找出的位置上以及其后的元素往后移动一个位置,然后将x放至腾出的位置上。三、【问题解答】①因为顺序表L中的元素是递增排列的,所以可以从小到大逐个扫描表中元素,当找到第一个比x大的元素时,将x插在这个元素之前即可。int fi原创 2020-07-23 17:56:20 · 16593 阅读 · 0 评论 -
线性表的结构体定义和基本操作
一、线性表的结构体定义#define maxSize 100 //定义整型变量maxSize为1001.顺序表的结构体定义typedef struct{int data[maxSize];int length;}sqlist;2.单链表的结点定义typedef struct LNode{int data;struct LNode *next;}LNode;2.双链表结点定义typedef struct DLNode{int data;struct DLNode *prio原创 2020-07-24 11:29:33 · 2073 阅读 · 0 评论 -
设将n (n>1)个整数存放到一维数组R中,设计一个算法,将R中的序列循环左移P (0<P<n) 个位置,即将R中的数据由{Xo,X, ..., Xn-1}变换为{Xp,Xp+1, ... Xn-1,
一、【问题描述】设将n (n>1)个整数存放到一维数组R中,设计一个算法,将R中的序列循环左移P (0<P<n) 个位置,即将R中的数据由{Xo,X, …, Xn-1}变换为{Xp,Xp+1, … Xn-1, X0,X1, …,Xp-1}。要求写出本题的算法描述。二、【问题分析】要实现R中序列循环左移P个位置,只需先将R中前P个元素逆置,再将剩下的元素逆置,最后将R中所有的元素再整体做一次逆置操作即可。本题算法描述如下:...原创 2020-07-23 15:00:45 · 7803 阅读 · 0 评论 -
数据结构——第一章与第二章部分习题
1.假设顺序表的长度为n,若在位序1处删除元素,则需要移动____ 个元素;若在位序n处删除元素,则需要移动____ 个元素;若在位序i(1≤i≤n)处删除元素,则需要移动____ 个元素。假设各位序删除元素的概率相同, 则平均需要移动____ 个元素答案:n-1;0; n-i; (n-1)/2;2.假设顺序表的长度为n,若在位序1处插入元素,则需要移动____ 个元素;若在位序n+1处插入元素,则需要移动___...原创 2020-07-21 11:44:55 · 5949 阅读 · 0 评论 -
数据结构——用头插法和尾插法建立链表
一、要求以头插法建立单链表#include <stdio.h>#include <stdlib.h>typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList Create();void print( LinkList L);int main(){ LinkList L = Create(); pr原创 2020-07-21 11:36:15 · 4974 阅读 · 0 评论 -
数据结构——返回带头结点的单链表L的逆转链表
代码填空:下列代码的功能是返回带头结点的单链表L的逆转链表List Reverse( List L ){ Position Old_head, New_head, Temp; New_head = NULL; Old_head = L->Next; while ( Old_head ) { Temp = Old_head->Next; ______________________________;原创 2020-07-21 11:19:21 · 12008 阅读 · 1 评论 -
数据结构第2章线性表习题(三)——应用题
第2章线性表四 应用题1.线性表有两种存储结构:一是顺序表,二是链表。试问:(1)如果有 n个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。在此情况下,应选用哪种存储结构? 为什么?选链式存储结构。它可动态申请内存空间,不受表长度(即表中元素个数)的影响,插入、删除时间复杂度为O(1)。(2)若线性表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,那么应采用哪种存储结构?为什么?选顺序存储结构。顺序表可以随机存取..原创 2020-07-21 10:55:30 · 13274 阅读 · 4 评论 -
数据结构第2章线性表习题(二)——判断填空题
第2章线性表二、判断1. 链表中的头结点仅起到标识的作用。( 错 )2. 顺序存储结构的主要缺点是不利于插入或删除操作。( 对)3.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。( 对 )4.顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。( 错 )5. 对任何数据结构链式存储结构一定优于顺序存储结构。( 错 )6.顺序存储方式只能用于存储线性结构。( 错 )7.集合与线性表的区别在于是否按关键字排序。( 错 )8. 所谓...原创 2020-07-21 10:15:22 · 9799 阅读 · 1 评论 -
数据结构第2章线性表习题(一)——选择题
第2章 线性表一 选择题1.下述哪一条是顺序存储结构的优点?( A )A.存储密度大 B.插入运算方便 C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示2.下面关于线性表的叙述中,错误的是哪一个?(B )A.线性表采用顺序存储,必须占用一片连续的存储单元。B.线性表采用顺序存储,便于进行插入和删除操作。C.线性表采用链接存储,不必占用一片连续的存储单元。D.线性表采用链接存储,便于插入和删除操作。3.线性表是具有n个( C )的有限序列...原创 2020-07-21 09:43:24 · 12518 阅读 · 2 评论 -
数据结构(第二版)严蔚敏第二章线性表练习题及答案
第2章 线性表1.选择题(1)顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( )。A.110 B.108 C.100 D.120答案:B解释:顺序表中的数据连续存储,所以第5个元素的地址为:100+2*4=108。(2)在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是( )。A.访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)B.在第i个结点后插入一个新结点(1≤i≤原创 2020-07-16 23:06:37 · 6666 阅读 · 0 评论