自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 while(scanf(“%d“,&x) != EOF)的退出方法

这个函数的退出方法是 回车后 ctrl+d

2021-01-11 23:41:09 1103 1

原创 已知长度为n的线性表 A=(a1,a2,...,an­1 , an) 采用顺序存储结构。将线性表原地转换为 A‘=( an,an­1,...,a2,a1),要求转换过程中用尽可能少的空间。

已知长度为 n 的线性表 A=(a1,a2,…,an­1 , an) 采用顺序存储结构。编写一算法, 将线性表原地转换为 A’=( an,an­1,…,a2,a1),要求转换过程中用尽可能少的辅助空间。void Reverse(Elemtype A[], int n){ for(int i=0;i<n/2;i++){ int j=n-i-1; temp=A[i]; A[j]=A[i]; A[i]=temp; }}...

2020-12-22 16:45:55 1595

原创 在含有 n 个元素的小顶堆中增加一个元素且调整为新的小顶堆。

在含有 n 个元素的小顶堆中增加一个元素且调整为新的小顶堆。算法:由于原来 n 个元素已经是堆,所以调整时仅需从 A[n+1]出发,走一条从叶子结点 A[n+1] 到根结点 A[1]的路径,将该结点与其父亲结点比较,若比父亲结点小,则与父亲 结点交换,再继续跟上一层父亲结点比较。直到根结点为止;若在某层,该结点比父 亲结点大,则算法结束,这时 A[1…n+1]个结点已经成为小顶堆。void heapsort(datataye A[1..n],datatype x){ int i,j,n; n++

2020-12-20 17:50:46 907 1

原创 假设有两个按元素递增有序排列的线性表 A 和 B,均以带头结点的链表作为存储结构,将 A 表和 B 表归并成一个按元素递减有序排列的线性表 C,并要求利 用原表(A 表和 B 表)的结点空

假设有两个按元素递增有序排列的线性表 A 和 B,均以带头结点的链表作为存储结构,编写算法,将 A 表和 B 表归并成一个按元素递减有序排列的线性表 C,并要求利 用原表(A 表和B 表)的结点空间存放表 C。算法:struct Lnode{ datatype data; struct Lnode *next;}void merge_dowum(Linklist &La,Linklist &Lb,Linklist &Lc){ pa=la->next;

2020-12-20 16:32:06 3972 2

原创 —个双向循环链表每当在链表 s 中进行一 次 Locate (s,x)运算时,并使此链表中结点保持按访问频度递减的顺序排列,以便使频繁访问的结点总是靠近表头。

有—个双向循环链表,每个结点有四个域,prior、next、data 和 freq。设计一个实现 下述要求的 Locate 运算的算法:初始化时,freq 域的值都为 0,每当在链表 s 中进行一 次 Locate (s,x)运算时,令元素值为 x 的节点中 freq 域的值增加 1,并使此链表中结点保 持按访问频度递减的顺序排列,以便使频繁访问的结点总是靠近表头。typedef struct DuLNode{ ElemType data; int freq; struct DuLNode

2020-12-18 16:30:08 687 4

原创 删除带头结点的单链表中所有介于给定两个值之间(作为函数参数给出)的元素(若存在),数据值无序。

算法:遍历后删除。void RangeDelete(Linklist &L,int min,int max){ Lnode *p=L->next; Lnode *pre=L; while(p!=NUll){ if(p->data>min&&p->data<max){//寻找被删结点,删除 pre=p->next; free(p); p=pre->next; } else

2020-12-16 16:35:06 394

原创 有一个带头结点的单链表L,设计算法使其元素递增有序。

算法:直接插入排序。O(n^2)void insert_sort(Linklist &L){ Lnode *p,*pre,*r; p=L->next; r=p->next;//r保持*p后继结点指针,以保证不断链 p->next=NULL;//构造只含一个数据结点的有序表 p=r; while(p!=NULL){ r=p->next; pre=L; while(pre->next!=NULL&am

2020-12-16 15:48:00 4793 6

原创 将带头结点的单链表就地逆置

思想:头插法建立单链表Linklist Reverse(Linklist L){ Lnode *p,*r;//p为工作指针,r为p的后继指针,防止断链 p=L->next;//从第一个元素结点开始 L->next=NULL;//将头结点的L的后继置为NULL while(p!=NULL){//依次降元素结点拿下 r=p->next; //暂存p的后继 p->next=L->next;//将p结点插在头结点之后 L-&gt

2020-12-15 22:00:41 1619 1

原创 在带头结点的单链表L中,删除所有值为x的结点,并释放空间,假设值为x的结点不唯一。

算法思想:遍历单链表,遇到值为x的就删除。Del_x(Linklist &L,Elemtype x){ Lnode *p=L->next,*pre=L,*q; while(p!=NULL){ if(p->data==x){ q=p; //q指向该结点 p=p->next; pre->next=p;//删除*q结点 free(p);//释放*q结点 } else{//否则,pre和p后移

2020-12-15 20:51:43 1517 2

原创 计算二叉树的最大宽度

采用层次遍历法(队列),记下各层的结点数,每层遍历完毕,若结点数大于原先最大宽度,则修改最大宽度。int Width(Bitree bt){ if(bt==NULL) return(0);//空二叉树宽度为0 else{ Bitree Q[];//Q是队列,元素为二叉树结点的指针,容量足够大 front=1;rear=1;last=1;//对头指针、队尾指针、last为最右结点在队列中的位置 temp=0;maxw=0; //temp记局部宽度,maxw记最大宽度

2020-11-19 15:16:23 6717 6

原创 简单选择排序

1、数组存储/** * 选择排序 * @param array * @return */public static int[] selectionSort(int[] array) { if (array.length == 0) return array; for (int i = 0; i < array.length; i++) { int minIndex = i; for (int j = i; j < array.length; j++) { if

2020-11-11 17:55:03 139

原创 查找二叉排序树中值为X的结点,若找到则计数加一,否则作为一个新的结点插入,插入后仍为二叉排序树。

1、递归算法void InOrder(BSTree *root,int x){ if(!root) return ; InOrder(root->lchild,x); if(root->data=x){ count ++; } InOrder(root->rchild,k);}2、非递归算法

2020-11-10 15:57:59 900

原创 (二叉排序树)从小到大输出二叉排序树中所有值不小于K的关键字

其实就是对二叉树进行遍历我们知道中序遍历二叉树是先左子树后右子树是从小到大的。void InOrder(BSTree *root,int k){ if(!root) return ; InOrder(root->lchild,k); if(root->data>=k){ visit(root); } InOrder(root->rchild,k);}...

2020-11-10 14:37:52 4461

原创 考研算法总结

1、元素逆置方法一:给定一个字符串C=“a0a1……an-1an”,其采用顺序队列结构存储,现需要将其逆序,即变换成“anan-1……a1a0”,变换后的结果仍然存储在原队列中。若给定一个顺序栈作为辅助结构,请给出实现策略。1. 元素逆置://顺序的入栈 2. for(i = 0;i < n;i++)3. {4. scanf("%d",&a);5. Push(&s,a);6. }7. 8. int stackNumber;9. for(i=0;

2020-10-20 21:15:42 2104

原创 考研1800笔记线性表

请在下列算法的横线上填入适当的语句。【清华大学1994 五 (15分)】  FUNCTION inclusion(ha,hb:linklisttp):boolean;  {以ha和hb为头指针的单链表分别表示有序表A和B,本算法判别表A是否包含在表B内,若是,则返回“true”,否则返回“false”}  BEGIN  pa:=ha^.next; pb:=hb^.next; (1)if(pa==NULL) then return true;//当A为空表  WHILE(2)pb!=NULL &a.

2020-10-19 20:21:16 599

原创 第一章绪论

第一章绪论1、与数据元素本身的形式、内容、相对位置、个数无关的是数据的 逻辑结构 ;2、数据>数据元素(基本单位)>数据项(最小单位)6 、试分析下列各算法的时间复杂度(1)`x=90; y=100;while(y>0) if(x>100) {x=x-10;y--} else x++; 我的答案:O(y);正确答案:O(1);ps:因为y的大小已经确定,所以y是常量。...

2020-10-17 21:31:58 591

空空如也

空空如也

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

TA关注的人

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