数据结构课后习题答案
算法题
1.试写一个插入算法int insertPost_seq(palist ,p,x), 在palist 所指的顺序表中,下标为p的元素之后,插入一个值为x的元素,返回插入成功与否的标志。
int insertPost_seq(PSeqList palist, int p, DataType x) {//在下标为p的元素之后插入元素x;int i;if (palist->n >= palist->MAXNUM) {printf("Overflow!\n");return 0;}if (p<0 || p>palist->n) // if (p<-1 || p>=palist->n) {printf("Not exist!\n");return 0;}for (i = palist->n - 1; i >= p+1; i--){palist->element[i + 1] = palist->element[i];palist->element[p + 1] = x;palist->n = palist->n + 1;return 1;}
2.试写一个删除算法
deleteV_seq(palist,x),在palist所指的顺序表中中,删除一个值为x的元素,返回删除成功与否。
int sreach(PSeqList palist,int x)
{int q;for (q = 0; q < palist->n; q++){if (palist->element[q] == x)return q;}return -1;
}int deleteP_seq(PSeqList palist, int p) //删除元素
{int i;if (p<0 || p>(palist->n) - 1){printf("Not exit!\n");return 0;}for (i = p; i < palist->n - 1; i++)palist->element[i] = palist->element[i + 1];palist->n = palist->n - 1;return 1;
}
3.设有一线性表eee=(e1e_1e1,e2e_2e2,…,en−1e_{n-1}en−1,ene_nen) ,其逆线性表定义为e′e'e′=(ene_nen,en−1e_{n-1}en−1,…,e2e_2e2,e1e_1e1) 。请设计一个算法。将用顺序表表示的线性表逆置,要求逆线性表仍占用原线性表的空间。
顺序表
void reversal(PSeqList palist)
{Datatype tmp;int i;if(palist->n==0||palist->n==1)return 0;for(i=0;i<palist->n/2;i++) //这里palist->n/2 相当于(palist->n)/2{element[i]=tmp;tmp=element[palist->n-i-1];element[palist->n-i-1]= element[i];}
}
单链表(不带头结点)
void reversal(LinkList llist){PNode p,q,r;p=(llist);If(p==NULL) return ;q=p->link;if(q==NULL) return;r=q->link;
while(r!=NULL){q->link=p;
p=q;
q=r;r=r->link;
}q->link=p;(llist)->link==NULL;llist=q;
}
int searchmin(PSeqList palist) {//寻找最小的元素;int min;int i;min = palist->element[0];for (i = 1; i < palist->n - 1; i++){if (palist->element[i] < min){min = palist->element[i];}}return min;
}
这个算法是算法复杂度最小的,但是题目好像没有要求 我感觉可以直接用很多次delete 函数吧 哈哈
6.先找到p的前驱结点
PNode locatePre_link(LinkList llist ,PNode p){PNode p1;if(llist==NULL) return NULL;p1=llist;while(p1!=NULL&&p1->link!=p)p1=p1->link;return p1;
}int insertPost_link(LinkList llist ,PNode p, DataType x){PNode q=(PNode)malloc(sizeof(struct Node));
if(q==NULL) {printf("Out of space!!! \n"); return 0;}
else{q->info=x; q->link=p->link;p=>link=q; return 1;}
}然后用 insertPost_link(llist,p1,x)
7.额 和上面那个一样 先找到前驱结点p1,然后在delete p1
p1->link=p->link;
int deletei_link(LinkList palist, int num)
/*返回0失败,返回1成功*/
{if (palist == NULL || num < 0) return 0; //第一种情况PNode p, pre = NULL; if (num == 0) //第二种情况{p = palist;palist = p->link;free(p);return 1;} p = palist;//第三种情况int count = 1;while (count !=num && p->link != NULL){pre = p;p = p->link;count++;}if (pre == NULL) return 0; pre->link = p->link;free(p);return 1;
}
9.这个和上面的一样 就是要在删除操作的时候 加个k次循环
12.
LinkList delete_same(LinkList llist) { PNode p,q;LinkList r; if (llist==NULL) return(NULL); p = llist;while(p ->next!=NULL){ q=p ->next ; while(q->next!=NULL)) if(p ->next ->info== q ->next ->info ){ r = q ->next;q ->next= r ->next;free(r); } //多加个r才能让p继续走下去 /(ㄒoㄒ)/~~else { q = q ->next;}p = p ->next; } return 1;}
int num(LinkList llist)
{int num;PNode q;if (llist ==NULL) return ;q=llist->link;num=1;while(q!=llist){q=q->link;num++;}return num;
}
15.
16.
数据结构课后习题答案相关推荐
- 数据结构实践(有的数据结构课后习题答案),红色是答案
第1章 绪论 习题 1.简述下列概念:数据.数据元素.数据项.数据对象.数据结构.逻辑结构.存储结构.抽象数据类型. 2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系. 3 ...
- 数据结构(C语言版 第2版)课后习题答案 严蔚敏 等 编著
数据结构(C语言版 第2版)课后习题答案 严蔚敏 等 编著,仅供参考,还是自己认真做了再看 第1章 绪论 5.选择题 (1)在数据结构中,从逻辑上可以把数据结构分成( C ). A.动态结构和静态 ...
- 数据结构(C语言版 第2版)课后习题答案 严蔚敏版
数据结构(C语言版 第2版)课后习题答案 严蔚敏 等 编著,仅供参考,还是自己认真做了再看 第1章 绪论 5.选择题 (1)在数据结构中,从逻辑上可以把数据结构分成( C ). A.动态结构和静态 ...
- 数据结构(C语言版 严蔚敏 编著)课后习题答案
转自 https://blog.csdn.net/Bamboo_shui/article/details/72433523 (原文没第八章答案) 数据结构(C语言版 第2版)课后习题答案 严蔚敏 ...
- JAVA 语言程序设计与数据结构 教材课本源码 和 课后习题答案
如题,因为大学用的这本书,所以找了很久,最后找到这个比较全的答案,目录如下.链接: [link](https://download.csdn.net/download/coinlock/8557428 ...
- 新视野教育计算机题库,校园网.新视野教育计算机等级考试《二级公共基础》课后习题答案...
<二级公共基础>课后习题答案 第一章 第一节 1.答案:D 解析:算法的时间复杂度不仅与问题的规模有关,而且与输入数据有关,即输入数据所有的可能取值范围及输入各种数据或数据集的概率有关.所 ...
- 《软件工程导论》课后习题答案
<软件工程导论>课后习题答案 第一章 软件工程概论 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.这些问题表现在以下几个方面: (1)用户对开发出 ...
- 【R语言编程基础】【课后习题答案】【全】
文章目录 第1章 R语言概述 1.选择题 2.操作题 第2章 数据对象与数据读写 1.选择题 2.操作题 第3章 数据集基本处理 1.选择题 2.操作题 第4章 函数与控制流 1.选择题 2.操作题 ...
- 计算机系统结构课后习题答案
想看更多算法题,可以扫描上方二维码关注我微信公众号"数据结构和算法",截止到目前我已经在公众号中更新了500多道算法题,其中部分已经整理成了pdf文档,截止到目前总共有800多页( ...
最新文章
- IT规划的企业应用实践(10)研究的范围和限制
- PHP用单例模式实现一个数据库类
- .NET开发者必备的工具箱
- go 中使用socket范例
- vue一步一步带你封装一个按钮组件
- PyPyODBC 0.9.2发布 - 纯Python实现的pyodbc替代库
- linux重启后版本变了,linux – 重启后如何使设备映射保持不变?
- Android多媒体学习一:Android中Image的简单实例。
- 【图书推荐】中国首部敏捷开发案例集《敏捷开发一千零一夜》
- adb命令自动旋转屏幕
- PMI采购MogaFX经理人指数是什么
- window10 删除桌面删除不掉的ie图标(快捷方式)
- Vue结合vant框架实现通讯录a-z排序
- 微信小程序关键字搜索
- java西历转换和历_java西历转换和历
- h5活动是什么意思_浅谈什么是H5页面,怎么制作h5页面
- Android软键盘弹出和收起的监听
- 集团企业实验室信息化建设必经的之路
- 【LeetCode之栈和队列】:关于栈和队列经典的OJ题(用C语言实现,附图详解)
- 魂武者服务器维护,《魂武者》8月16日停机更新公告
热门文章
- 运放(二)-深度负反馈电路放大倍数分析
- Android -- 每日一问:在项目中使用AsyncTask会有什么问题吗?
- 2020年数据科学与大数据技术专业填报指南(附院校及专业介绍)/ 高考填志愿...
- Sourcetree 使用
- 矩阵分析之Householder Reduction
- Docker拉取Solace pubsub+镜像timeout的问题
- 数组的push()、pop()、shift()和unshift()方法
- 基于C#分步式聊天系统的在线视频直播系统 之 FY.Logfiles(日志文件组件)
- [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.se
- matlab 点云根据法向量投影到六个平面