q=p;

p=p->next;

q->next=pt3->next; pt3->next=q; pt3=pt3->next; } } q=L; free(q); return OK; }

在2.34至2.36题中

\异或指针双向链表\类型XorLinkedList和指针异或函数XorP定义为: typedef struct XorNode { char data;

struct XorNode *LRPtr; } XorNode *XorPointer;

typede struct { //无头结点的异或指针双向链表 XorPointer Left

Right; //分别指向链表的左侧和右端 } XorLinkedList;

XorPointer XorP(XorPointer p XorPointer q);

// 指针异或函数XorP返回指针p和q的异或值 2.34 假设在算法描述语言中引入指针的二元运算\异或\若a和b为指针

则a⊕b的运算结果仍为原指针类型 且

a⊕(a⊕b)=(a⊕a)⊕b=b (a⊕b)⊕b=a⊕(b⊕b)=a

则可利用一个指针域来实现双向链表L

链表L中的每个结点只含两个域:data域和LRPtr域

其中LRPtr域存放该结点的左邻与右邻结点指针(不存在时为NULL)的异或 若设指针L.Left指向链表中的最左结点 L.Right指向链表中的最右结点

则可实现从左向右或从右向左遍历此双向链表的操作 试写一算法按任一方向依次输出链表中各元素的值

解:

Status TraversingLinkList(XorLinkedList &L char d) {

XorPointer p

left right;

if(d=='l'||d=='L'){ p=L.Left; left=NULL;

while(p!=NULL){

VisitingData(p->data); left=p; p=XorP(left p->LRPtr); } } else

if(d=='r'||d=='R'){ p=L.Right; right=NULL; while(p!=NULL){

VisitingData(p->data); right=p;

p=XorP(p->LRPtr right);

} }

else return ERROR; return OK; }

2.35 采用2.34题所述的存储结构

写出在第i个结点之前插入一个结点的算法

2.36 采用2.34题所述的存储结构 写出删除第i个结点的算法

2.37 设以带头结点的双向循环链表表示的线性表 试写一时间复杂度O(n)的算法 将L改造为

解:

// 将双向链表L=(a1 a2 ...

an)改造为(a1 a3 ... an

... a2)

Status ListChange_DuL(DuLinkList &L) {

int i;

DuLinkList p q r;

p=L->next; r=L->pre; i=1;

while(p!=r){ if(i%2==0){ q=p;

p=p->next; // 删除结点

q->pre->next=q->next; q->next->pre=q->pre; // 插入到头结点的左面 q->pre=r->next->pre; r->next->pre=q; q->next=r->next; r->next=q; }

else p=p->next; i++; }

return OK; }

2.38 设有一个双向循环链表 每个结点中除有pre data和next三个域外

还增设了一个访问频度域freq 在链表被起用之前

频度域freq的值均初始化为零 而每当对链表进行一次Locate(L x)的操作后

被访问的结点(即元素值等于x的结点)中的频度域freq的值便增1 同时调整链表中结点之间的次序

使其按访问频度非递增的次序顺序排列

以便始终保持被频繁访问的结点总是靠近表头结点 试编写符合上述要求的Locate操作的算法

解:

DuLinkList ListLocate_DuL(DuLinkList &L ElemType e) {

DuLinkList p q;

p=L->next;

while(p!=L && p->data!=e) p=p->next; if(p==L) return NULL; else{

p->freq++; // 删除结点

p->pre->next=p->next; p->next->pre=p->pre; // 插入到合适的位置 q=L->next;

while(q!=L && q->freq>p->freq) q=q->next; if(q==L){

p->next=q->next; q->next=p; p->pre=q->pre; q->pre=p; } else{

// 在q之前插入

p->next=q->pre->next; q->pre->next=p; p->pre=q->pre; q->pre=p; }

return p; } }

在2.39至2.40题中

稀疏多项式采用的顺序存储结构SqPoly定义为 typedef struct { int coef; int exp; } PolyTerm;

typedef struct { //多项式的顺序存储结构 PolyTerm *data; int last; } SqPoly;

2.39 已知稀疏多项式 其中

数据结构题集c语言版题目与答案,数据结构题集(C语言版)答案 - 严蔚敏编著...相关推荐

  1. 数据结构(C语言版 严蔚敏 编著)课后习题答案

    转自 https://blog.csdn.net/Bamboo_shui/article/details/72433523    (原文没第八章答案) 数据结构(C语言版 第2版)课后习题答案 严蔚敏 ...

  2. 湖南城市学院c语言试卷题目,英语四级、计算机二级--C语言应该怎样复习?考试有哪些题型?...

    满意答案 bsthq888 2013.09.08 采纳率:52%    等级:11 已帮助:6497人 这个是大学生在校期间,所要获得的最基本的两个证书!很有必要拿到的!我考的是VF!C不晓得! 我在 ...

  3. 数据结构题集c语言版第七章答案,数据结构题集(C语言版)答案 - 严蔚敏编著...

    C Temp); ListMinus_L(A Temp D); } 2.30 要求同2.29题 试对单链表编写算法 请释放A表中的无用结点空间 解: // 在A中删除既在B中出现又在C中出现的元素 并 ...

  4. 取多补少C语言,leetcode题目: 数字的补数 的C语言解法

    题目链接 题目内容 给定一个正整数,输出它的补数.补数是对该数的二进制表示取反. 注意: 给定的整数保证在32位带符号整数的范围内. 你可以假定二进制数不包含前导零位. 示例 1: 输入: 5 输出: ...

  5. 嵌入式c语言笔试题目,考一考!嵌入式C语言面试题3道

    原标题:考一考!嵌入式C语言面试题3道 题一: 程序编译的过程? 题二: ++i和i++的区别 题三: 用C语言实现字符串倒序. 题一答案: 预处理:预处理相当于根据预处理命令组装成新的C程 序,不过 ...

  6. c语言编程 输入螺旋数组,C语言 经典题目螺旋矩阵 实例详解

    C语言 经典题目螺旋矩阵 实例详解 C语言 经典题目螺旋矩阵 //N阶螺旋矩阵 #include #include int main() { int N,i,j,n,num=1; int a[10][ ...

  7. C语言经典题目(一)

    分享之前和大家分享一本书叫做<厚黑学>,这本书可以了解一下社会现实,但是看这本书的时候切记,不可迷失自己.扉页的第一段话和大家分享一下:我自读书识字以来,就想为英雄豪杰,求之四书五经,茫无 ...

  8. 严蔚敏版《数据结构 (C语言版)》和《数据结构题集》(一)

    这里用的是严蔚敏版<数据结构 (C语言版)>和<数据结构题集>,深感自己的代码写得又渣又无力,打算把这本书好好琢磨透彻,里面的算法和模板都实现一遍,题目也都做一遍.最终能够做到 ...

  9. c语言采用顺序存储结构存储串,试编写算法实现串的置换操作,串-第4章-《数据结构题集》答案解析-严蔚敏吴伟民版...

    习题集解析部分 第4章 串 --<数据结构题集>-严蔚敏.吴伟民版 源码使用说明  链接☛☛☛<数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 课本源码合 ...

  10. 严蔚敏版《数据结构 (C语言版)》和《数据结构题集》(五)——栈和队列...

    栈的顺序表实现 1 #include <iostream> 2 #include <stdlib.h> 3 #include <stdio.h> 4 #define ...

最新文章

  1. nginx如何解决超长请求串
  2. mysql损坏表修复
  3. 如何测量PN中的耗散层两边的电位差?
  4. 双人五子棋对战(需要EasyX图像库)
  5. Unencrypted connection refused. Goodbye. Connection closed by foreign host.
  6. java 用来查找输出的函数_Solr复杂查询一:函数查询
  7. mongoudb 等于_MongoDB常用操作
  8. 《编程珠玑》笔记3 数据结构选择
  9. python导入同目录下的模块_如何从同一目录下的模块导入?
  10. c语言for循环 wdtcn,MSP430F149的DS18B20C语言程序
  11. shouji android输入法,安卓手机主流输入法对比
  12. 长寿的人会有的8个健康理念
  13. C# 把list中的数据转成规定格式的json格式
  14. rocketmq mysql_聊聊rocketmq-mysql的BinlogPositionManager
  15. Java Lambda 策略模式
  16. regnam r语言_求助:R语言进行增加值分解的一部分代码看不懂,求大神过目
  17. DoS攻击原理与实战(LOIC+Hping3)
  18. 【转载】扫描渗透等工具介绍
  19. Yocto理论篇 | OpenEmbedded构建系统之BitBake
  20. 一看就停不下来的中国史

热门文章

  1. easyui 图标下拉框
  2. c#json对象转数组_如何将Json数组转换为C#中的对象列表
  3. 面向组学大数据的生物信息学研究
  4. 快解析:NAT移动版结合管家婆使用操作
  5. 计算机二级c语言程序设计题(一)
  6. [网络安全自学篇] 八十五.《Windows黑客编程技术详解》之注入技术详解(全局钩子、远线程钩子、突破Session 0注入、APC注入)
  7. 如何成为Java高级工程师?
  8. React Native之七牛
  9. iOS开发,自定义字体,字体名称查询
  10. 使用Python3将BT种子转磁力链接