数据结构代码题
lucky lures
活到老,学到老!三人行必有我师!
展开
-
串部分伪代码
串部分伪代码1、以顺序存储结构表示串,设计算法。求串SSS中出现的第一个最长重复子串及其位置并分析算法的时间复杂度文字思想: 本质上就是模式匹配 假设字符串长度为n,下标从0开始: 1)i…n-1的字符依次作为子串subStr,其中i∈[0,n-1] 2)对subStr求next数组,保留其中最大值 3)对所有subStr的最大值中的最大值,就是该字符串的最大重复长度// 改进next数组int getNextMax(char *s,int *next) { // 获取s的长度原创 2021-09-20 15:48:33 · 582 阅读 · 0 评论 -
数组和矩阵部分伪代码
数组和矩阵部分伪代码1、编写算法,将自然数1…n21…n^21…n2按蛇形填入n×nn×nn×n矩阵中,如下图所示:13410259116812157131416文字思想: 1)创建二维数组array[n][n],初始时都设置元素值为0 2)将矩阵中元素用下标表示,可以发现每一轮横纵坐标相同的元素,其值是连续填充的,且整个遍历的轮数是2n-1,当遍历轮数为偶数时从右上遍历到左下,遍历轮数为奇数时,遍历方向为左下到右上 3)每一次填充时将当原创 2021-09-20 15:47:58 · 2525 阅读 · 0 评论 -
栈和队列部分伪代码
栈和队列部分伪代码1、设单链表的表头指针为LLL,结点结构由datadatadata和nextnextnext两个域构成,其中datadatadata域为字符型。试设计算法判断该链表的全部nnn个字符是否中心对称。例如XYX、XYYXXYX、XYYXXYX、XYYX都是中心对称文字思想: 1)设计一个求单链表表长函数CalLength 2)创建一个链栈B,初始时B->next = NULL,若L的表长len为奇数,则L依次遍历len/2个结点并将其依次入栈B,L = L->next,L和原创 2021-09-20 15:47:23 · 1324 阅读 · 0 评论 -
单链表部分伪代码
链表部分伪代码1、设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点文字思想; 1)建立递归函数,每一轮进行判断L->data是否为x,是则进行删除结点操作,然后 L = L->next,直到遍历到链表尾部L->next = NULLLNode *getElemByPos(LinkList L,int i) { int j = 1; LNode *P = L->next; if (i == 0) { return L;原创 2021-09-20 11:18:17 · 1670 阅读 · 0 评论 -
顺序表部分伪代码
顺序表部分伪代码2、从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素。空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行。文字思想: typedef struct { ElemType data; int length; // 代表顺序表的长度 }SqList; 1)判断顺序表长度是否为0,是则表示顺序表为空,显示出错信息退出 2)用e接收待删除的元素,用L.data[L.length - 1]替换原先位置的元素,L.length减1// 伪代码原创 2021-09-20 11:16:57 · 1711 阅读 · 0 评论 -
【代码题专项】顺序表12
题目:已知在一维数组A[m+n]中依次存放两个线性表(a1,a2,a3,…,am)和(b1,b2,b3,…,bn)。试编写一个函数,将数组中两个顺序表的位置互换,即将(b1,b2,b3,…,bn)放在(a1,a2,a3,…,am)的前面。伪代码文字思想: 本题难点在于m和n大小情况未知 1)m比n大时,例子:(1,2,3,4,5)(6,7,8)——》(6,7,8)(1,2,3,4,5); 用暴力法还是比较简单的,可以另建一个新表存储,则空间复杂度为O(n),或者是将表往后移动n位,然后将(b1,原创 2021-09-16 11:05:34 · 324 阅读 · 0 评论 -
【代码题专项】顺序表11
题目:将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表伪代码:文字思想: 在归并排序那了解到最好的情况是前一个有序表的最后一个元素比后一个有序表的第一个元素还小,则此时比较次数为n,直接将第二个表拼接到第一个表的表尾。最坏情况是交叉,如:1,3,5,7和2,4,6,8则此时比较2n-1次 1)两表表尾元素对其,比较输出值较大的元素到新表,输出元素后依旧保持表尾对其直到一个表为空 2)将剩下的表中元素依次取出放到新表的表尾,则新表称为降序排列表void addAB2C(SqLi原创 2021-09-16 10:06:00 · 124 阅读 · 0 评论 -
【代码题专项】顺序表10
题目:从有序顺序表中删除所有值重复的元素,使表中所有元素的值均不同。伪代码:文字思想: 例子:1,2,2,2,3,3,4——》1,2,3,4 1)因为顺序表有序,则值相同的元素必定连续出现 2)设置i从1开始遍历到L.length-1,k初始为1,若L.data[i] != L.data[i-1],L.data[k] = L.data[i];k += 1; 3)遍历到最后k所指元素后面都是重复元素,L.length = k具体实现:# include <iostream>u原创 2021-09-16 09:18:40 · 143 阅读 · 0 评论