自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 26

问题     已知消费总金额,请设计一个发票打印程序,打印输出的发票金额单位为:千  百 十 元。分析     这个就不分析了吧代码void fun(int num) { int qian, bai, shi, yuan; qian = num / 1000; bai = (num - qian * 1000) / 100; shi =

2016-10-04 22:30:12 352

原创 25

问题       设有一个线性表,存放在一维数组a[0...n-1]中,编程将数组中每一个元素循环右移k位,要求只用一个辅助单元,时间复杂度为O(n)。分析       类似2题代码void reverse(int R[], int begin, int end) { for(int i = 0; i < (end - begin + 1) / 2; i++) {

2016-10-04 22:22:56 474

原创 24

问题       已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n),空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素分析        从头开始遍历,值等于item向前移动一下,不等继续向后遍历,最后需要改变线性表的长度。代码void fun(SqList &l, int item) { ///SqList是需要删除元素的线性表

2016-10-03 18:24:50 437

原创 23

问题       在输入数据无序的情况下,建立一个数据值为整型的递增有序的顺序存储线性表L,且要求当输入相同数据值时,线性表中不能存在数据值相同的数据元素分析      和22思路一样  代码稍微改下就行了代码typedef int ElemType;typedef struct SqList { ElemType data[100]; int length

2016-10-02 23:20:18 491

原创 22

问题       设线性表存在于A[1...size]的前num各分量中,且递增有序,请设计一个算法,将X插入线性表的适当位置上,以保持线性表的有序性。分析       递增有序,二分查找看看有没有该元素,没有的话插入到适当位置代码void binarySearchInsertList(SqList &l, int n) { ///线性表l存储递增有序的元素,从1开始存

2016-10-02 22:51:32 814

原创 21

问题       已知一个由n(设n=1000)个整数组成的线性表,试设计该线性表的一种存储结构,并设计算法,实现将n个元素中所有大于等于19的整数放在所有小于等于19的整数之后,要求算法的时间复杂度为O(n),空间复杂度为O(1)。分析       类似20题思路,一次快速排序代码typedef int ElemType;typedef struct SqList {

2016-10-02 22:30:41 422

原创 20

问题        已知线性表(a1,a2,a3,……an)按顺序存于内存,每个元素都是整数,试设计用最少时间把所有值为负数的元素全部移到全部正数值元素前面的算法。分析       一次快速排序代码typedef int ElemType;typedef struct SqList { ElemType data[100]; int length;}SqL

2016-10-02 22:19:21 1149 1

原创 19

问题      顺序结构线性表LA与LB的头结点关键字为整数。LA与LB的元素按非递减有序,线性表空间足够大,试编写算法,将LB中的元素合并到LA中,并使新的LA的元素仍保持非递减有序。高效值最大限度地避免移动元素。分析      高效,从m+n-1的位置开始排元素代码void fun(SqList &La, SqList Lb) { ///i为La的长度-1 j为Lb

2016-10-02 22:09:23 258

原创 18

问题      已知三个带有节点的线性表A、B和C中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),编写算法对A表进行如下操作:是操作后的链表A中仅留下三个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用的结点。限定算法的时间复杂度为O(m+n+p),其中m、n、p分别为三个表的长度。分析      先找B和C相同的元素,然后在A中找该元素是否存在

2016-10-02 21:44:34 496

原创 17

问题       设有两个链表,ha为单向链表,hb为单向循环链表。编写算法,将两个链表合并成一个单向链表,要求算法所需时间与链表长度无关。分析       所需时间与链表长度无关,只有使用带尾指针的单循环单链表,将该序列插入单向链表第一元素之前即可。代码LinkList mergeList(LinkList &ha, LinkList &hb){ ///ha单向链表,

2016-09-27 23:25:01 477

原创 16

问题       已知L1、L2分别为两循环单链表的头结点指针,m,n分别为L1、L2表中数据节点个数。要求设计一算法,用最快速度将两表合并成一个带头结点的循环单链表。分析      最快的速度,遍历长度较短的链表,找到尾结点,然后将该链表插入到长度较长的链表中,即可。代码LinkList mergeList(LinkList &l1, int m, LinkList &l2,

2016-09-27 22:54:04 976

原创 15

以后补充

2016-09-27 22:17:46 368

原创 14

以后补充

2016-09-27 22:17:23 314

原创 13

以后补充

2016-09-27 22:17:10 232

原创 12

以后补充

2016-09-27 22:16:45 385

原创 11

问题       已知两个链表A和B分别表示两个集合,且元素递增排列。编一函数,求A和B的交集并存放于A链表中。分析          将A链表置空,从A和B有相同的结点的时候,插入到A链表中。代码typedef int ElemType;typedef struct LNode { ElemType data; struct LNode * next;}L

2016-09-26 18:00:53 240

原创 10

问题       设带头结点且头指针为ha和hb的两线性表A和B分别表示两个集合。两表中元素皆为递增有序。请写一算法求A和B的并集。要求该并集中的元素仍保持递增有序,且要利用A和B原有结点空间。分析       实际上思路和第9题类似,把B中有而A中没有的元素插入到A中去,不就是第9题么。只不过不用重新申请空间保存B的结点,直接用B的结点就行。代码typedef int Ele

2016-09-26 17:46:04 438

原创 9

题目       设有两个无头结点的单链表,头指针分别为ha、hb,链表中有数据域data,链域next,两链表的数据都按递增序存放,现要求将hb表归到ha表中,且归并后ha仍递增序,归并中ha表中已有的数据若hb中也有,则hb中的数据不归并到ha中,hb的链表在算法中不允许破坏。分析代码源代码

2016-09-26 17:25:29 777

原创 8

问题       1.设有两个有序单链表,一为升序,一为降序。试编写程序,将这两个链表合并成一个有序链表       2.设A为递增有序单链表(长度为n),B为递减有序的单链表(长度为m),编写程序,和用原表的存储空间,将A、B合并成一个递增有序单链表,要求时间复杂度为O(n+m)分析         这两道题是一道题,将降序的单链表逆序成升序的单链表,然后思路和上一题思路一样。

2016-09-25 22:29:13 1003

原创 7

问题            假设有两个按元素值递增次序排列的线性表,均以单链表形式存储,请编写算法将这两个单链表归并为一个按元素值递减次序排列的单列表,并要求利用原来两个单链表的结点存放归并后的单链表。分析             两个链表均是按元素值递增次序排列,从头开始遍历链表l1和l2,假设合并后的链表存到l1中,则首先将l1置为空表,此时,如果l1对应结点的值小于l2对应结点的

2016-09-24 23:01:21 306 1

原创 6

题目       用单链表保存m个整数,结点结构为:[data][link],且(n为正整数),现要求设计一个时间复杂度尽可能高效的算法,对于链表中data的绝对值相等的结点,仅保留第一次出现的结点而删除其余绝对值相等的结点。       例如,给定单链表如下则删除结点后的head为分析            1个足够大的数组,保存结点data绝对值出现的次数,

2016-09-24 18:10:11 3450

原创 5

问题       已知一个整数序列A={},其中(),若存在且m>n/2(),则称X为A的主元素。例如A={0,5,5,3,5,7,5,5},则5为主元素,又如A={0,5,5,3,5,1,5,7},则A中没有主元素。假设A中的n个元素保存在一个一维数组中,设计一个尽可能高效的算法,找出A的主元素。若存在主元素,则输出该元素,否则输出-1。分析       数组A有n个整数

2016-09-24 17:32:29 700

原创 4

问题假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时,则可以共享相同的后缀存储空间。例如“loading”和“beging”的存储映像如下图所示。设str1和str2分别指向两个单词所在的单链表的头结点,链表结点结构为(data,next)。请设计一个时间上尽可能高效的算法,找出由str1和str2所指的两个链表的共同后缀的起始位置(如上图中字符i所在结点的位置p)分

2016-09-23 23:54:31 1052

原创 3

题目       一个长度为L(L>=1)的升序序列S,处在第(L/2)个位置的数称S的中位数。两个序列的中位数是包含他们所有元素的升序序列的中位数,试设计一个在时间和空间两方面都尽可能高效的算法,找出两个升序序列A和B的中位数。分析      一个升序序列S1={11,13,15,17,19},S1的中位数是15,S2={2,4,6,8,20},则S1和S2的中位数是11。   

2016-09-23 22:53:16 388

原创 2

问题       设将n(n>1)个整数存放到一维数组R中。试设计一个在时间和空间两方面都尽可能高效的算法,将R中保存的序列循环左移P(0分析     1.可以每次左移一次,循环k次。     2.用一个新数组,按照题目上的要求复制原数组     3.进行三次逆转操作,第一次0到p-1进行你装,第二次p到n-1进行逆转,第三次0到n-1进行逆转。逆转过程如图。

2016-09-22 23:54:15 541

原创 1

问题           已知一个带头结点的单链表,结点结构为(data,link)假设该链表只给出了头指针list,在不改变链表的前提下,设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数),若查找成功,算法输出该结点的data域的值,并返回1,否则,只返回0。分析    设置两个指针p、q,分别指向该链表的第一个元素(头结点的下一个元素),一个整数num(初值为

2016-09-22 22:42:51 1861

原创 数据结构线性表一些知识点

先空着,后面补充

2016-09-22 21:36:55 370

原创 不知道说点啥

在准备考研,用的参考书《算法与数据结构考研试题精析》第三版,上面有362道算法分析题,用博客的方法记录思想和相关代码。因为有点懒,所以用这个方法督促自己每天看几道算法设计题,写出来的东西自己掌握的应该差不多了。删除了自己之前的一些博客,因为这些博客自己都看不下去。今天离考研还有93天,因为一些坑爹的原因,小不在状态。好吧,不知道说啥了。

2016-09-22 21:32:56 256

空空如也

空空如也

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

TA关注的人

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