
数据结构
balconyang
这个作者很懒,什么都没留下…
展开
-
数据结构一道选择题
已知有一个链表为双向循环链表的结构(如下),则在q指针指向的结点后面插入一个p结点,需要修改的指针为:[A] p->llink=q; p->rlink=q-rlink ; q->rlink=p; q->llink=p;[B] p->llink=q; p->rlink=q-rlink ; q->rlink=p; q->rlink-&...原创 2019-07-14 19:01:17 · 338 阅读 · 0 评论 -
删除单链表中重复的结点
删除已排序链表中重复的元素,使得每个元素只出现一次例如输入:1 -> 2 -> 2 -> 3输出:1 ->2 -> 3算法思路:表中并没有说明带有头结点,设头指针L,首结点p(指针为L)遍历整个表,进入循环体:拿当前结点与后继结点进行对比,如果二者相同,直接删除这个后继结点,这样使得每个元素只出现一次;如果二者不相同,把当前指针p顺序后移;void ...原创 2019-07-14 00:57:06 · 866 阅读 · 0 评论 -
删除表中重复的元素 - leetcode算法题
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。例如输入[1,2,2,3],输出[1,2,3]题解:# 前后元素进行对比1.定义一个基准元素p,初始化赋值为表中的第一个元素。2.增加一个计数器k,初始化值为1,用于计算表中互不相同的元素个数。3.遍历整个表,依次把后面元素与基准元素p进行对比:例如把表中nums[1]和基准值p...原创 2019-07-11 14:51:38 · 536 阅读 · 0 评论 -
王道计算机&leetcode算法题
题目:删除顺序表中所有等于val的元素,返回顺序表新的长度算法思路1:反向思维法。可以用一个k记录不等于val的个数,把表中元素重新排序,最后k的个数就是表的长度,时间复杂度O(n),空间复杂度O(1)int removeElem(int *nums,int numsSize,int val){ //k记录不等于val的个数 int k=0; for (int i=0;i<num...原创 2019-07-11 10:22:52 · 543 阅读 · 0 评论 -
2018计算机研究生统考试题 - 数据结构综合题
算法思路:用一个指示数组B[ ] 来存放数组的正整数分布。开始时候,B[ ]中初始化值全部为0。现在遍历原始数组中全部元素,如果满足值在1-n之间,将B[A[i] -1]由0置1(下标和数值之间差1,B[ ]置1的元素对应当A[ ]完全正常时的元素,B[ ]中剩下为0的元素的下标就是缺少的那个最小正整数的下标,它的值 =下标 + 1;int Find_missing_min(int A[],...原创 2019-07-08 15:13:46 · 697 阅读 · 0 评论 -
2010计算机硕士统考试题赏析
题干:设将n(n>1)个整数放进一维数组R中。试设计一个时间和空间上都高效的算法。将R中保存的序列循环左移p(0<p<n)个位置,即将R中的数据由(x0,x1,x2,…xn-1) => (xp,xp+1,xp+2,xn-1…x0,x1…xp-1)(1)给出算法的基本设计思想;(2)根据算法思想,采用C或者C++或者Java语言描述算法,关键之处给出注释;(3) 说明...原创 2019-07-08 10:29:23 · 194 阅读 · 0 评论 -
2017计算机硕士统考选择题 - 求时间复杂度
题干:2017统考第一道选择题已知一段代码如下,分析它的时间复杂度:int func(int n){ int sum=0,i=0; while (sum<n) sum += ++i; return i;}**解析:代码块循环体内容 => i = i + 1,sum = sum + i.结果如下,0 = 0 + 13 = 1 + 26 = 3 + 310 = 6...原创 2019-07-04 09:10:14 · 2825 阅读 · 2 评论 -
2013计算机硕士统考试题分析 - 数据结构
题干思路解析:遍历数组元素,标记出一个可以成为主元素的元素Num,然后重新计数,确认Num是否是主元素算法分为两步:① 选取候选的主元素过程:依次遍历所给数组的每个整数,将第一个遇到的整数Num保存到c中,记录Num出现的次数为1,若下一次遇到的整数仍然为Num,则计数加1,否则减1;当计数减到0的时候,重新选取新的Num为c,并且重新开始计数,直到遍历完全部元素② 判断c的元素是否可以成...原创 2019-07-03 16:09:04 · 503 阅读 · 0 评论 -
2009计算机硕士统考试题分析 - 数据结构综合题
题干算法思路:这道题采用双指针法比较方便,因为只需要一次遍历就可解决。① 设置两个指针p和q,在一开始时同时指向首结点,然后使得p指针先移动k-1个结点,q指针此时不动,此时p和q距离k-1个结点。② 接着同时移动p指针和q指针,直到p指针指向尾结点,而此时p和q,距离为k-1。那么q指针指向的结点就是倒数第k个结点,访问这个结点data,算法完成。typedef int Element...原创 2019-07-02 16:39:46 · 169 阅读 · 0 评论