2024王道数据结构课后习题代码( 四 )


2.2.12
12.【2013统考真题】已知一个整数序列A=(a0, a1,… , an-1) , 其中0≤ain/2 ( 0≤p; 1)给出算法的基本设计思想 。
2)根据设计思想 , 采用C或C++或Java语言描述算法,关键之处给出注释 。
3)说明你所设计算法的时间复杂度和空间复杂度 。
在这里插入代码片
2.2.13
13.【2018统考真题】给定一个含n(n≥1)个整数的数组 , 请设计一个在时间上尽可能高
效的算法 , 找出数组中未出现的最小正整数 。例如 , 数组{-5,3,2,3}中未出现的最小正整数是1;数组{1,2,3}中未出现的最小正整数是4 。要求:
1)给出算法的基本设计思想 。
2)根据设计思想 , 采用C或C++语言描述算法 , 关键之处给出注释 。3)说明你所设计算法的时间复杂度和空间复杂度 。
在这里插入代码片
14.【2020统考真题】定义三元组(a, b, c) ( a,b, c均为整数)的距离D= |a-b| + |b-c| +|c-a| 。给定3个非空整数集合S1、S2和S3 , 按升序分别存储在3个数组中 。请设计一个尽可能高效的算法 , 计算并输出所有可能的三元组(a, b, c) (a属于S1 , b属于S2 , c属于S3)中的最小距离 。例如S1={-1,0,9} , S2={-25,-10,10,11} , S3={2,9,17,30,41} , 则最小距离为2 , 相应的三元组为(9,10, 9) 。要求:
1)给出算法的基本设计思想 。
2)根据设计思想 , 采用C语言或C++语言描述算法 , 关键之处给出注释 。
3)说明你所设计算法的时间复杂度和空间复杂度 。
在这里插入代码片
朋友们 , 我来更新了 , 有没有想我 2.2单链表 2.2.1 单链表的建立
1.尾插法
//尾插法建立单链表LinkList List_tailInsert(LinkList &L){int x;L=(LinkList)malloc(sizeof(LNode));//建立头节点LNode *s,*r=L;L->length=0;printf("\n请输入第一个结点的值:");scanf("%d", &x); while(x!=99){//99是自己设的 , 一旦输入99 , 链表就会停止插入 L->length++;s=(LNode*)malloc(sizeof(LNode));s->data=http://www.kingceram.com/post/x;r->next=s;r=s;//尾指针指向新的结点printf("\n请输入下一个结点的值:");scanf("%d", &x);}r->next=NULL; //尾结点指针为空 return L;}
2.头插法
头插法就是不断地对头结点进行尾插(你品 , 你细品)
//头插法建立链表,头插法适合考虑将数表逆转 LinkList List_headInsert(LinkList &L){LNode *s;int x;L=(LinkList)malloc(sizeof(LNode));L->next=NULL; printf("\n请输入结点的值:");scanf("%d", &x);while(x!=99){//99是自己设的 , 一旦输入99 , 链表就会停止插入 L->length++;s=(LNode*)malloc(sizeof(LNode));s->data=http://www.kingceram.com/post/x;s->next=L->next;L->next=s;//头节点更新位置 printf("\n请输入下一个结点的值:");scanf("%d", &x);}return L; }
3.单链表的插入与删除

【2024王道数据结构课后习题代码】未完待续… 2023年五月末之前将更新完本书所有习题