自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 王道数据结构4.4.5大题

4、正则k叉树有m个非叶结点,则叶结点有多少?若正则k叉树高为h,则结点数最多为多少?最少为多少?5、以孩子兄弟表示法存储的森林的叶子结点树即求二叉树中左孩子为空的结点的个数6、以孩子兄弟链表为存储结构,设计递归算法求树的深度7、已知一棵树的层次序列及每个结点的度,编写算法构造此树的孩子兄弟链表...

2019-10-28 03:20:26 561

原创 王道数据结构4.4.5——7、已知一棵有2011个结点的树,其叶结点个数为116,该树对应的二叉树中无右孩子的结点个数是?

2019-10-28 00:12:03 15124 29

原创 王道数据结构4.3.3大题

1、高度=结点数2、只有一个根结点3、后序遍历的非递归算法void posorder(BTNode *bt){ if(bt!=NULL){ BTNode *Stack1[maxSize];int top1=-1; BTNode *Stack2[maxSize];int top2=-1; Stack1[++top1]=bt; ...

2019-10-27 20:37:18 515 2

原创 天勤数据结构笔记——第六章 树与二叉树(大题)

1、基础题(1)略(2)采用层次遍历,visit(q); 改为 count++;void level(BTNode *p,int &count){ count=0; int front=rear=0; BTNode *que[maxSize]; BTNode *q; if(p!=NULL){ //根结点入队 ...

2019-10-23 01:06:16 354

原创 天勤数据结构笔记——第六章 树与二叉树(代码)

二叉树的链式存储结构typedef struct BTNode{ char data; struct BTNode *lchild; struct BTNode *rchild;}BTNode;先序遍历void preorder(BTNode *p){ if(p!=NULL){ visit(p); preorde...

2019-10-17 01:45:37 368

原创 王道数据结构3.3.6——3、利用栈实现以下递归函数的非递归算法

思路代码double p(int n,double x){ struct stack{ int no; double val; }st[MaxSize]; int top=-1,i; double fv1=1,fv2=2*x; for(i=n;i>=2;i--){ //入栈 top++;...

2019-10-14 02:42:28 1104

原创 王道数据结构3.3.6——2、铁道进行车厢调度,将一辆列车的硬座车厢都调到软坐车厢后面

思路给定火车字符数组,将硬座字符放入栈中,将软坐字符向前移动,最后依次出栈放入字符数组。代码void match(char train[]){ Stack s; InitStack(s); char *p=train,*q=train,c; while(*p){ if(*p=='H'){ Push(s,*p);...

2019-10-14 01:20:52 982

原创 王道数据结构3.3.6——1、判断一个表达式中的圆括号、方括号和花括号是否配对

思路遍历表达式数组,有上述三种括号时,放入栈中,遇到上述三种括号的反括号时,出栈。直到遍历结束。代码bool match(char str[]){ InitStack(S); int i=0; while(str[i]!='\0'){ switch(str[i]){ //左括号 case '[':...

2019-10-14 01:08:28 732

原创 王道数据结构3.2.5——3、用两个栈模拟队列

思路分为栈s1和s2,每次入队前,先检查s1是否满了,满了还得保证s2为空,这样才能全部放入s2中再入栈。每次出队前,检查s2是否为空,若空,则从s1全部放入,再出栈。队满的情况就是s1和s2都满了,队空的情况就是s1和s2都空了。代码int EnQueue(Stack &S1,Stack &S2,ElemType e){ ElemType x; if...

2019-10-13 01:58:50 196

原创 王道数据结构3.2.5——1、循环队列中设置tag区分头指针front和队尾指针rear相等时队列的状态是空还是满

入队操作int Enqueue(SqQueue &Q,ElemType x){ if(Q.front==Q.rear&&Q.tag==1){ return 0;//队满 } Q.data[Q.rear]=x; Q.rear=(rear+1)%maxsize; Q.tag=1; return 1;}出...

2019-10-13 01:58:43 1319

原创 王道数据结构2.3.7——23、删除单链表中绝对值相等的元素,只保留第一个元素

思路该题要求时间复杂度尽可能高效,因此牺牲空间换时间。设置辅助数组q[n+1],初始化为0.遍历单链表,如果出现数字a,则给q[a]赋值为1;若a重复出现,则删除此结点。代码void del_same(LinkList &head,int n){ LNode *p=head->next,*pre=head; if(p==NULL) return; ...

2019-10-12 21:49:38 505 2

原创 王道数据结构2.3.7——22、查找两个用来表示单词的单链表的公共后缀结点

思路比较两链表长度,较长者指针移动长度差个单位,两表指针再共同移动直到指针相同,即为公共后缀的第一个结点。代码略

2019-10-12 21:11:09 469

原创 王道数据结构2.3.7——21、查找单链表上倒数第k个位置的结点

思路设指针k和p遍历单链表,k指向头结点,直到p遍历到第k个位置时,指针k和p同时移动。代码bool find_k(LinkList List,int k){ LNode *p=List,*q=List; if(p->next==NULL){ return 0; } int count=0; while(p->nex...

2019-10-12 20:51:26 145

原创 王道数据结构2.3.7——20、使非循环双链表中访问频度最高的结点置于表首

思路主要考察双链表的查找、插入、删除代码DLNode Locate(DLinkList &L,ElemType x){ LNode *p=L->next,*r; //找到值为x的结点DD while(p!=NULL&&p->data!=x) p=p->next; p->freq++; r=p-&g...

2019-10-12 20:31:31 254

原创 王道数据结构2.3.7——19、反复找出并删除循环单链表的最小值,直到表为空

思路与单链表比,结尾不一样了。代码void del_min(LinkList &L){ LNode *pre=L,*p=L->next,*r; while(p->next!=L){ if(p->next->data<pre->next->data) pre=p; else p=p-&gt...

2019-10-12 00:09:58 385

原创 王道数据结构2.3.7——17、判断循环双链表是否对称

思路设置头尾指针,向中间遍历代码bool symmetry(LinkList A){ LNode *p=A->next,*q=A->prior; while(p!=q&&q->next!=p){ if(p->data == q->data){ p=p->next; ...

2019-10-12 00:09:52 552

原创 王道数据结构2.2.3——16、判断一个单链表是否为另一个单链表的连续子序列

思路ra指针只要和rb不一样,ra往后移一位,rb移到开头;ra和rb相同,两个同时移一位,继续比较。有两种情况要考虑到:A表比B表短、A表比表长。所以最后判断条件为:rb是否到底。代码bool find_child(LinkList A,Linklist B){ LNode *ra=A->next,*rb=B->next; while(ra!=NULL ...

2019-10-12 00:09:47 701 11

原创 王道数据结构2.3.7——15、两单链表的交集存放与其中一个单链表

思路ra指针负责删除和保留A表元素,rb负责遍历B表元素。代码void intersection(LinkList &A,Linklist B){ LNode *ra=A,*rb=B->next,*r,*p; while(ra->next!=NULL && rb!=NULL){ if(ra->next->...

2019-10-12 00:09:42 232

原创 王道数据结构2.2.7——14、创建新表放入两个递增序列的单链表的公共元素

思路两表指针比较大小后,在新表中创建结点并赋值。代码void pub(LinkList A,Linklist B,LinkList &C){ C=(LinkList)malloc(sizeof(LNode)); C->next=NULL; LNode *ra=A->next,*rb=B->next,*rc=C; while(r...

2019-10-12 00:09:35 148

原创 王道数据结构2.3.7——18、循环单链表的合并

思路主要是注意结尾的处理代码void merge(LinkList &h1,LinkList h2){ LNode *p=h1->next; while(p->next!=h1){ p=p->next; } p->next=h2->next; while(p->next!=h2){ ...

2019-10-12 00:08:36 179

原创 王道数据结构2.2.7——13、两个递增单链表合并为一个递减单链表

思路设立指针ra,rb分别指向A和B,当两个指针都不为空时,用头插法将两指针中较小者放入C中;当两个指针中有一个为空时,头插法放入另一个指针的元素。直到把A和B的元素都放完。代码void merge(LinkList A,Linklist B,LinkList &C){ C=(LinkList)malloc(sizeof(LNode)); C->next...

2019-10-11 22:59:10 575

原创 王道数据结构2.27——12、去除递增有序的单链表中重复的元素

思路边遍历,边比较,边删除代码void del_rep(LinkList &L){ LNode *p=L->next,*r; while(p!=NULL){ if(p->data == p->next->data){ r=p->next; p->next=r-&...

2019-10-11 22:08:58 169

原创 王道数据结构2.2.7——11、从一个单链表中分离出两个表

思路创建A、B表头,在hc单链表中遍历拆下结点用尾插法放入A,或用头插法放入B中。代码void divide(LinkList hc,LinkList &A,LinkList &B){ A=(LinkList)malloc(sizeof(LNode)); B=(LinkList)malloc(sizeof(LNode)); A->next...

2019-10-11 21:51:37 191

原创 王道数据结构2.2.3——10、数组中的两个顺序表互换位置

思路遍历A中的奇数,用尾插法插入B中代码void divide(LinkList A,LinkList &B){ B=(LinkList)malloc(sizeof(LNode)); B->next=NULL; LNode *p=A,*q=B; while(p->next!=NULL){ if(p->next-...

2019-10-11 21:34:56 296

原创 王道数据结构2.2.7——9、按递增次序输出带头结点的单链表元素,并释放结点存储空间

思路1、直接插入排序,然后遍历输出结点并删除结点2、遍历n次,每次找到最小值删除。✔代码void del_min(LinkList &head){ LNode *pre,*p,*r; while(head->next!=NULL){ pre=L;p=pre->next; while(p->next!=NUL...

2019-10-11 21:18:25 509

原创 王道数据结构2.2.3——8、找处两个单链表的公共结点

思路注意,两个单链表有公共结点意味着,只要有一个公共结点,那么后继的所有结点都是完全一样的。因此,两个单链表相当于“Y”的形状。由于两个链表长度不一定相等,所以算出长度差d之后,用较长的单链表遍历到第d个位置,然后两个表开始一起遍历,直到两个指针所指元素是同一个,也就是第一个公共结点,后面的所有结点都是公共结点。代码LinkList pub_node(LinkList L, Link...

2019-10-11 03:00:49 241

原创 王道数据结构2.2.4——7、删除带头结点的无序单链表中大小介于给定两个值之间的元素

思路边遍历,边删除代码void del_betw(LinkList &L, ElemType s, ElemType t){ LNode *p=L->next,*pre=L; while(p!=NULL){ if(p->data>s && p->data<t){ pre-&g...

2019-10-11 01:53:25 247

原创 王道数据结构2.2.4——6、使带头结点的单链表递增有序

思路直接插入排序法,也是取下头结点,再一个一个按递增顺序插入进来。代码void sort(LinkList &L){ LNode *q=L->next,*p=q->next,*r; q->next=NULL; while(p!=NULL){ q=L; while(p->data>q->...

2019-10-11 01:44:21 327 1

原创 王道数据结构2.2.4——5、带头结点的单链表就地逆置

思路把头结点取下,然后用头插法逆置代码void reverse(LinkList &L){ LNode *p=L->next,*r; L->next=NULL; while(p!=NULL){ r=p->next; p->next=L->next; L->next=p;...

2019-10-11 00:56:59 232

原创 王道数据结构2.2.4——4、删除带头结点的单链表中唯一的最小值结点

思路设置p和pre一对指针负责遍历,设置min和min_pre一对指针负责指向最小值。代码void del_min(LinkList &L){ LNode *p=L->next,*pre=L; LNode *min=L->next,*min_pre=L; while(p!=NULL){ if(p->data<mi...

2019-10-11 00:44:47 266

原创 王道数据结构2.2.4——3、反向输出带头结点的单链表的每一个值

思路1、头插法逆转顺序,再遍历一次。✔2、递归遍历输出代码void deverse(LinkList L){ LNode *p=L,*q=L->next; p->next=NULL;p=NULL; while(q!=NULL){ //头插法 L->next=q; q=q->next; ...

2019-10-09 02:34:30 382 1

原创 王道数据结构2.2.4——2、删除带头结点的单链表中值为x的所有结点

思路不需要思路代码void del_x(LinkList L, ElemType x){ LNode *p,*pre,*r; p=L->next; pre=L; while(p!=NULL){ if(p->data==x){ r=p; pre->next=p->ne...

2019-10-09 02:17:47 448 2

原创 王道数据结构2.2.4——1、设计递归算法删除不带头结点的单链表L中所有值为x的结点

思路递归包含三个部分:出口、调用本身、删除操作。代码void del_x(LinkList &L,ElemType x){ LNode *p; if(L==NULL){ return; } if(L->data==x){ p=L; L=L->next; free(p);...

2019-10-09 02:11:31 669

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除