
408数据结构
一勺-_-
这个人很懒,他森莫都没有写~
展开
-
B-树和B-树的插入和B-树删除
B树和B树的插入删除转载 2020-11-04 15:40:54 · 137 阅读 · 0 评论 -
408数据结构:数组,矩阵,广义表
①数组a[行][列](1)分为按行优先,按列优先例题:②矩阵(1)对称矩阵:矩阵中的元素满足a[i][j]=a[j][i]的矩阵称之为对称矩阵(矩阵必须是nn的方阵)例题:假设有一个nn的对称矩阵,第一个元素为a[0][0],请用一种存储效率高的形式将其存储在一维数组中。(2)三角矩阵:分为上三角矩阵,下三角矩阵例题:假设有一个n*n的三角矩阵,第一个元素为a[0][0],请用一种存储效率高的形式将其存储在一维数组中(3)对角矩阵此处过,考的不多,考了就pass掉做别的题目例题:原创 2020-09-30 19:05:49 · 2081 阅读 · 0 评论 -
408数据结构综合题
数据结构综合应用题⑩试证明:若借助栈可由输入序列1,2,3,…n得到一个输出序列p1,p2,p3,…pn(它是输入序列的某一种排列),则在输出序列中不可能出现以下情况:存在i<j<k,使得pj<pk<pi(提示:用反证法)解答:1)必要性。按照题意,当i<j<k时,进栈顺序是i,j,k,这3个元素出栈的相对顺序是pi,pj,pk.例如,当i=1,j=2,k=3时,一个合理的出栈序列是pi=2,pj=3,pk=1.如果如果pj<pk<pi成立,意味着出栈顺原创 2020-09-28 19:56:01 · 3964 阅读 · 4 评论 -
最全中缀,前缀,后缀相互转换总结
①中缀前缀后缀相互转换总结表②常用的运算符优先级原创 2020-09-27 20:46:26 · 689 阅读 · 0 评论 -
408数据结构
此篇关于链队和链栈的题目①对于链队,在进行出队操作时()A.仅修改头指针B.仅修改尾指针C.头,尾指针都要修改D.头,尾指针可能都要修改解析:D②用不带头结点的单链表存储队列时,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时()A.仅修改队头指针B.仅修改队尾指针C.队头,队尾指针都要修改D.队头,队尾指针可能都要修改解析:D③最适合用作链队的链表(链表有头结点,有队首指针则指向头结点,有队尾指针则指向终端结点)是()A.只带队首指针的循环单链表B.只带队原创 2020-09-26 21:50:55 · 2150 阅读 · 2 评论 -
括号匹配和计算问题
①括号匹配也是属于栈的问题int isMatched(char left,char right){ if(left=='('&&right==')') return 1; else if(left=='['&&right==']') return 1; else if(left=='{'&&right=='}') return 1; else return 0;}int isParenthesesBalanced(char e原创 2020-09-26 15:54:52 · 186 阅读 · 0 评论 -
用栈模拟队列
①此篇为用栈(先进后出)模拟队列(先进先出)所以最后出“队”结果还是为1234②入队规则若s1未满,则元素直接入s1若s1满,s2空,则将s1中元素全部出栈并入s2,腾出位置后再入s1③出队规则若s2不空,则从s2中直接出栈若s2空,则将s1中元素全部出栈并入s2,然后从s2中出栈③队满s1满且s2不空,则不能继续入队,即为栈满状态④队空s1空且s2空,则队空...原创 2020-09-25 00:35:44 · 187 阅读 · 0 评论 -
共享栈
①抛出问题:有两个栈,一个栈需要入栈元素但是满了,而另一个栈为空,这种情况应该怎么办?②拼接成为共享栈(合二为一)③代码部分int stack[maxsize];int top[2]={-1,maxsize};//新的栈指针为top[2],从top[0]到top[1]top[0]==-1;//s1为空top[1]==maxsize;//s2为空stack[++top[0]]=x;//s1入栈stack[--top[1]]=x;//s2入栈top[0]+1==top[1];//此时栈满原创 2020-09-25 00:14:28 · 273 阅读 · 0 评论 -
双端队列
①队列的几种情况②双端队列的例题③注意事项其中用到的公式为标蓝色的部分原创 2020-09-24 16:08:09 · 98 阅读 · 0 评论 -
队列的三种配置区分
此篇为队列的三种配置区分及对比:①首先上图,理清思路②具体分析③对比总结原创 2020-09-21 13:15:50 · 366 阅读 · 1 评论 -
数据结构学习思路
原创 2020-09-15 18:42:26 · 179 阅读 · 0 评论 -
408数据结构综合题
数据结构综合应用题⑨问题:键盘输入n个英文字母,输入格式为n、C1、C2、…、Cn,其中n表示字母的个数。请编程以这些输入数据建立一个单链表,并要求将字母不重复的存入链表;输入一个单词,扫描其在链表中是否出现,如果出现,就什么都不做;否则,根据这个单词构造结点插入链表中。答案:void createLinkNoSameElem(LNode* &head){ head=(LNode*)malloc(sizeof(LNode));//分配头结点存储空间并置空 head->nex原创 2020-09-10 23:42:06 · 285 阅读 · 0 评论 -
408数据结构综合题
数据结构综合应用题⑧问题:设计一个算法,从一给定的顺序表L中删除下标i-j(i≤j,包括i,j)的所有元素,假定i,j都是合法的。思路:本题是顺序表删除算法的扩展,可以采用如下方法解决:从第j+1个元素开始到最后一个元素为止,用这之间的每个元素去覆盖从这个元素开始往前数第j-i+1个元素,即可完成删除i-j的所有元素答案:void delete(SqList &L,int i,int j)//L要改变,引用引用型{ int k,delta; delta=j-i+1;//元素要移动的距离原创 2020-09-07 23:48:28 · 436 阅读 · 0 评论 -
408数据结构综合题
数据结构综合应用题⑦问题:有一个顺序表L,其元素为整形数据,设计一个算法,将L中所有小于表头的整数放在前半部分,大于表头元素的整数放在后半部分。->对应快速排序思路:先将L的第一个元素存于变量temp中,然后定义两个整形变量i和j,i从左往右扫描,j从右往左扫描,边扫描边交换答案:void move (Sqlist &L)//L要改变,所以用引用型{ int temp; int i=0,j=L.length-1; temp=L.data[i]; while(i<j)原创 2020-09-07 23:21:48 · 711 阅读 · 0 评论 -
408数据结构综合题
数据结构综合应用题⑥问题:有一个递增非空的单链表,设计一个算法删除值域重复的结点。例如,{1,1,2,3,3,3,4,4,7,7,7,9,9,9}经过删除后变成{1,2,3,4,7,9}。**思路:定义指针p指向起始结点。将p所指的当前结点值域和直接后继结点值域做比较。如果当前结点值域等于后继结点值域,则删除后继结点;否则p指向后继结点。重复以上过程,直到p的后继结点为空。**答案:void delsl1(LNode *L){ LNode *p=L->next,*q; while(p-原创 2020-09-07 23:01:18 · 756 阅读 · 0 评论 -
408数据结构综合题
数据结构综合应用题⑤问题:设计一个算法删除单链表L(有头结点)中的一个最小值结点。思路:用指针p从头至尾扫描链表,pre指向*p结点的前驱,用minp保存值最小的结点指针,minpre指向minp的前驱。一边扫描,一边比较,将最小值结点放到minp中答案:void delminnode(LNode *L){ LNode *pre=L,*p=pre->next,*minp=p,*minpre=pre; while(p!=NULL)//查找最小值结点minp以及前驱结点minpre {原创 2020-09-07 21:39:20 · 279 阅读 · 0 评论 -
408数据结构综合题
数据结构综合应用题④问题:有一个线性表,采用带头结点的单链表L来存储。设计一个算法将其逆置。要求不能建立新结点,只能通过表中已有结点的重新组合来完成。思路:逆序也就是链表建立头插法答案:void reversel(LNode *L){ LNode *p=L->next,*q; L->next=NULL; while(p!=NULL)//p结点始终指向旧的链表的开始结点 { q=p->next;//q结点作为辅助结点来记录p的直接后继结点的位置 p->next原创 2020-09-07 20:04:32 · 233 阅读 · 0 评论 -
408数据结构综合题
问题:为什么单循环链表中设置尾指针比设置头指针更好?答案:尾指针是指向终端结点的指针,用它来表示单循环链表可以使得查找链表的开始结点和终端结点都很方便。设一个带头结点的单循环链表,其尾指针是rear,则开始结点和终端结点分别为指针rear所指结点的后继结点的后继结点和指针rear所指的结点,即rear->next->next和rear,查找时间均为0(1)。若用头指针来表示该链表,则查找开始结点为0(1),终端结点为O(n)。...原创 2020-09-03 16:22:54 · 575 阅读 · 0 评论 -
408数据结构综合题
数据结构综合应用题①如下函数mergesort()执行的时间复杂度为多少?假设函数调用被写为mergesort(1,n),函数merge()的时间复杂度O(n)void mergesort(int i,int j){int m;if(i!=j){m=(i+j)/2;mergesort(i,m);mergesort(m+1,j);merge(i,j,m);}}答案解析:https://blog.youkuaiyun.com/sementicweb/article/details/8225646原创 2020-08-28 22:18:42 · 1589 阅读 · 2 评论 -
408数据结构综合题
数据结构综合应用题③问题:设计一个算法,将头节点为A的单链表(其数据域为整数)分解成两个单链表A和B,使得A链表只含有链表中data域为奇数的结点,而B链表只含有原链表中data域为偶数的结点,且保持原来的相对顺序。解题思路:用指针p从头到尾扫描A链表,当发现结点data域为偶数的结点则取下,插入链表B中。因为题目要求保持原来数据元素的相对顺序,所以要用尾插法来建立B链表答案:void splits2(LNode *A,LNode *&B){ LNode *p,*q,*r; B=(LN原创 2020-09-07 15:48:09 · 531 阅读 · 0 评论