会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
William_Goodman
博客园
|
首页
|
新随笔
|
新文章
|
联系
|
订阅
|
管理
2019年10月10日
栈习题(1)-对于任意的无符号的的十进制数m,写出将其转换为十六进制整数的算法(正确输出即可)
摘要: 1 /*对于任意的无符号的的十进制数m,写出将其转换为十六进制整数的算法(正确输出即可)*/ 2 /* 3 算法思想:利用辗转取余法,每次都将余数存入栈中,直到被除数等0,退出循环。 4 输出栈里的内容即可 5 */ 6 void ToHex(int m) 7 { 8 SqStack S; 9 int k, *e; 10 InitStack(S); 11 while (m > 0) 12 { 13
阅读全文
posted @ 2019-10-10 22:45 William_Goodman
阅读(1042)
评论(0)
推荐(0)
编辑
链表习题(9)-编写一算法,将链表中数据域值最小的结点移到链表的最前面。要求不能申请新结点
摘要: 1 /*编写一算法,将链表中数据域值最小的结点移到链表的最前面。要求不能申请新结点*/ 2 /* 3 算法思想:找到最小值结点,及其前驱,然后通过修改指针域达到要求 4 */ 5 void MoveMinToFirst(LinkList& L) 6 { 7 LNode *pre = L, *p = L->next; 8 LNode *premin = pr...
阅读全文
posted @ 2019-10-10 19:52 William_Goodman
阅读(2809)
评论(0)
推荐(1)
编辑
链表习题(8)-寻找单链表中数据域大小为k的结点,并与前一结点交换,如果前一结点存在的情况下
摘要: 1 /*寻找单链表中数据域大小为k的结点,并与前一结点交换,如果前一结点存在的情况下*/ 2 /* 3 算法思想:定义两个指针,pre指向前驱结点,p指向当前结点,当p->data == k的时候,交换 4 pre->data和p->data 5 */ 6 void SwapData(LinkList& L, int k) 7 { 8 LNode *pre...
阅读全文
posted @ 2019-10-10 19:22 William_Goodman
阅读(468)
评论(0)
推荐(0)
编辑
链表习题(7)-将两个递增单链表合并成一个递减单链表
摘要: 1 /*将两个递增单链表合并成一个递减单链表*/ 2 /* 3 算法思想:两个链表已经按元素值递增次序排序,将其合并时,均从第一个结点起进行比较,将较小的 4 结点链入链表中,同时后移工作指针。由于结果链表是递减的,故使用头插法建立新链表。比较结束后, 5 可能会有一个链表非空,此时用头插法将剩下的结点依次插入新链表中即可。 6 */ 7 void Unio...
阅读全文
posted @ 2019-10-10 19:13 William_Goodman
阅读(2061)
评论(0)
推荐(0)
编辑
链表习题(6)-链表返回倒数第k个数的位置的值
摘要: 1 /*链表返回倒数第k个数的位置的值*/ 2 /* 3 算法思想:先取得链表的长度len,之后获取len-k+1的位置元素的值 4 */ 5 Elemtype Getelem_rear(LinkList L, int k) 6 { 7 if (k next; 15 i--; 16 } 17 cout data data; 19 } ...
阅读全文
posted @ 2019-10-10 18:52 William_Goodman
阅读(245)
评论(0)
推荐(0)
编辑
链表习题(5)-给定两个单链表,编写算法找出两个链表的公共结点
摘要: 1 /*给定两个单链表,编写算法找出两个链表的公共结点*/ 2 /* 3 算法思想:两个链表有公共结点的话,那么从第一个公共结点开始,后面的结点都是相同的,不可 4 能出现分叉。又由于两个链表的长度不一定一样,故不能同时遍历两个链表。 5 可以先得到两个链表的长度l1,l2,设l1-l2=k,那么在教长的链表上遍历k个结点,在同步遍历两个链 6 表,保...
阅读全文
posted @ 2019-10-10 00:12 William_Goodman
阅读(2098)
评论(0)
推荐(1)
编辑
2019年10月9日
顺序表习题(1)-打印非递减数组a与b的升序并集(去除重复元素)
摘要: 1 void Print_Union(SqList a,SqList b) 2 { 3 int p = 0, q = 0; //初始化指针 4 int flag = -1; //记录上一次打印的元素 5 while (p!=a.length&&q!=b.length) 6 { 7 //a与b均非空时 8 ...
阅读全文
posted @ 2019-10-09 23:42 William_Goodman
阅读(531)
评论(0)
推荐(0)
编辑
链表习题(4)-有一个带头结点的单链表,编写算法使其元素递增有序
摘要: 1 /*有一个带头结点的单链表,编写算法使其元素递增有序*/ 2 /* 3 算法思想:利用直接插入排序的思想,先构成只含有一个数据结点的有序单链表,然后依次插入 4 剩余结点到合适的位置。 5 */ 6 void Sort(LinkList& L) 7 { 8 LNode *p = L->next, *pre; 9 LNode *r = p->n...
阅读全文
posted @ 2019-10-09 22:59 William_Goodman
阅读(3451)
评论(0)
推荐(0)
编辑
链表习题(3)-将带头结点的链表进行逆置
摘要: 1 /*将带头结点的链表进行逆置*/ 2 /* 3 算法思想:设逆置链表尾空,将原链表中的结点依次删除后,按头插法插入逆置链表中,直至 4 原链表为空 5 */ 6 void Reverse(LinkList& L) 7 { 8 LNode *p, *q; 9 p = L->next; 10 L->next = NULL; 11 ...
阅读全文
posted @ 2019-10-09 22:21 William_Goodman
阅读(577)
评论(0)
推荐(0)
编辑
链表习题(2)-一个集合用带头结点的单链表L表示,编写算法删除其值最大的结点。
摘要: 1 /*一个集合用带头结点的单链表L表示,编写算法删除其值最大的结点。*/ 2 /* 3 算法思想:使用pre,p,premax,max四个指针,pre和p进行比较,premax和max进行最后的删除操作 4 通过遍历找到最大的值,后进行删除 5 */ 6 void Delete_Max(LinkList& L) 7 { 8 LNode *pre = L, *p = L->next; 9 LNod
阅读全文
posted @ 2019-10-09 22:05 William_Goodman
阅读(1064)
评论(0)
推荐(0)
编辑
下一页
公告