先声明,高手勿喷,本人菜鸟,Rose不仅是正在学习数据结构的新手而且是第一次写技术性的博客文章。

  上个星期完成了老师布置的作业———《数据结构》的顺序表和一元多项式,本打算前两天写关于顺序表的博客文章,但后来想了想,还是写这个链表的吧。当你们按照书上的代码敲上去vc或者其他编译器时候,是不是发现无法通过,在这里提示一下各位,我们书上虽然写着数据结构(c语言版),但是这里面的伪代码涉及到了引用“&”,这是c里面没有的,而是c++的概念,因此,我们在为工程添加file时候,必须是cpp源文件。由于觉得代码篇幅较短,所以没有把文件分开来写,下次的作业,Rose会采用分开来写的方(即是头文件+实现源文件+主函数源文件)。

好吧,废话多了点,进入正题,先来看看头部定义。

#define OK 1
#define ERROR 0
#define OVERFLOW -1

typedef int Status;
typedef int ElemType;

typedef struct DulNode
{
ElemType exp; //指数
ElemType coef;//系数*注:在是头结点,coef则记录了该表的结点数
struct DulNode *prior;//前驱指针
struct DulNode *next;//后继指针
}DulNode,*DulLinkList;

必须包含的头文件就不多说了,这篇文章,我会贴出这个宏定义,而后就不在贴出,在Rose的代码中,只定义了这几个宏,然而你们会发现在其他的资料还有个infeasible -2,这个看你的需要了。还有自定义的2个类型(int),Status、ElemType,以后看到这个标识符(identifier)就知道是什么了吧。接下来定义的就是双向表形式的存储结构了。注释清楚,不用多说了。

下面看看函数声明部分,这次的程序有18个函数:

Status Create(DulLinkList &L);//建表
Status Destroy(DulLinkList &L); //销毁
Status CleanUp(DulLinkList &L); //清空,注意是并不释放对象内存,而是把头结点置空
Status Insert(DulLinkList &L); //提供给用户的插入界面
Status Insert(DulLinkList &L,int index,ElemType coef,ElemType exp);//重载Insert(),在Add()里面调用
Status BubbleSort(DulLinkList &L); //不合适||-_,
Status SimplySort(DulLinkList &L); //不合适||-_,
void QuickSort(DulLinkList &L,int low,int high); //快排适用于链表结构
Status DoDataExchange(DulNode *S,DulNode *R); //数据交换
Status Delete(DulLinkList &L); //提供给用户的删除界面
Status Delete(DulLinkList &L,int item); //重载Delete(),在Add()里面调用
Status Add(DulLinkList &L1,DulLinkList L2); //2个多项式相加得到L1,并销毁L2
Status Find(DulLinkList L,ElemType &coef,ElemType &exp);//查找某项,并返回系数和指数
Status Show(DulLinkList L); //打印输出表达式
void DrawMenu(); //画菜单
int DataCmp(int a,int b); //两个数比较,若a大则返回1,若相等返回0,否则返回-1
int Partition(DulLinkList &L,int low,int high); //划分

这些函数有几个是重载的,专门给自己定义的函数调用,并非提供给用户界面的,所以我都有注释着重载,对于重载的概念,没学过c++的,我在简要说一下,重载某个函数的要求就是该函数与某函数同名,但参数必须不同(可以是个数不同,可以是个数相同,而某个类型不同)。在这里我不会对每个函数都去解释,Rose相信各位都能懂,不过有些注意的地方,还是说说把,而且也是自己碰到过的问题,就是排序问题,对于链表的排序,Rose发现原来不是像顺序表那样可以随机交换数值那么简单,所以当时,编完两个排序算法(冒泡和选择)也觉得奇怪了,不能正确排序。于是乎Rose又写了第三个排序算法,快排,然后,还是没成功,发现排序结果只完成了一趟,就是把Partition()把数据划分了一趟,这个问题我也思考着,究竟是该用数值进行交换呢,还是指针进行呢。对于链表这种不能随机存取的结构,我们显然不能直接数值交换,怎么样实现排序,我们需要用2个指示指针来完成,当第一个指针指示某结点,而另一个指针需要指向下一个结点,不过,我们又该怎样去实现这个算法。推荐看看http://blog.csdn.net/wumuzi520/article/details/8078322。如果不用快排也可以,当然,其他排序算法,Rose会在后面需要的时候再进行补充。

好吧,晚了,明早还有课,就写到这把,大概就讲了编译注意的事情和某些书上没有的定义一般都是int以及链表排序遇到的一些问题。

另外这里是我自己写好的源码:

1.第一次作业,顺序表:

http://download.csdn.net/detail/u011440667/7056761

2.这次作业,一元多项式:

http://download.csdn.net/detail/u011440667/7068929

数据结构之一元多项式相关推荐

  1. 数据结构_一元多项式的建立及其运算

    一元多项式的建立及其运算 一元多项式的数据结构 输入一元多项式的函数 输出保存在单链表中的一元多项式 运算一元多项式并输出结果 main函数中的内容 一元多项式的数据结构 #ifndef __POLY ...

  2. PHP数据结构之四 一元多项式的相加PHP单链实现

    <?php /** *一元多项式的表示和相加 *一元多项式的表示采用单链表的形式 **/ header("content-type:text/html;charset=gb2312&q ...

  3. 【数据结构】一元多项式

    实验报告格式规范,包括以下内容:(正文 宋体五号 ) 一.问题描述(标题黑体小四) 对简单的一元多项式相加.相减.求导运算. 二.实验目的 实现对简单的一元多项式相加.相减.求导运算. 三.实验设计 ...

  4. 数据结构:一元多项式(线性表)

    实验方案: 分别采用了顺序表.链表的方式实现一元多项式完成多项式的加.减运算并求值 1.实现功能描述: (1) 输入和输出: 需要输入的信息有多项式的系数和指数,用来向系统动态申请内存:系数和指数用来 ...

  5. C语言数据结构实现——一元多项式的基本运算

    问题描述: ​​​​​​ 第一种算法:顺序存储结构实现--顺序表 (1)算法思路: 算法要​实现两个一元多项式相关的相关运算,相加.相减.相乘.首先我们要选取一种存储结构来存放我们多项式的每一项,我们 ...

  6. 数据结构:一元多项式及其基本运算

    1.实现方式:可采用线性表的顺序存储结构,但是当多项式的每个项的指数差别很大时,会浪费很多存储空间.所以采用链式存储方式表示,每一项可以表示成一个结点,结点的结构由存放系数的coef域,存放指数的ex ...

  7. 【数据结构】一元多项式的表示及相加

    文章目录 ⭐️写在前面的话⭐️ 一元多项式的表示及相加 初始化 0_1.初始化链表 0_2_1.头插法插入多项式的项(没有相同项) 0_2_2.将要插入的相同,链表中有相同项,对应系数相加 0_3.从 ...

  8. 【数据结构】一元多项式相加(链表应用实验)

    //定义一元多项式链表结点结构HLink //创建一元多项式链表函数 void Build(HLink &H); //输出一元多项式链表函数 void Exp(HLink H);#includ ...

  9. [源码和文档分享]基于C++的一元多项式的计算

    1 问题描述 将多个多项式输入并存储在内存中,然后对多项式进行加.减运算并输出结果. 2 数据结构描述 一元多项式的表示方式:如 f=6x^5-7x^4+3 表示为 f=6,5 -7,4 3,0 每个 ...

  10. c语言实现一元多项式的除法,课内资源 - 基于C++的一元多项式的计算

    1 问题描述 将多个多项式输入并存储在内存中,然后对多项式进行加.减运算并输出结果. 2 数据结构描述一元多项式的表示方式:如 f=6x^5-7x^4+3 表示为 f=6,5 -7,4 3,0 每个多 ...

最新文章

  1. java TreeMap用法
  2. Java SE 6之GUI:让界面更加绚丽(上)
  3. 博客笔记导读目录-temp
  4. android 北斗定位代码_大牛三步教你解决,BAT资深APP性能优化系列-卡顿定位问题,收藏哦
  5. python交互式数据可视化_python数据可视化工具
  6. boost::asio::ip::tcp实现阻塞tcp echo客户端的程序
  7. Oracle goldengate 11g错误汇总
  8. 【电赛】一阶卡尔曼滤波器 滤波效果良好
  9. [Ext JS4] 数据包
  10. Zookeeper启动zkServer.cmd闪退, zk服务启动跟报错:Unexpected exception, exiting abnormally java.net.BindException
  11. 开发一款即时通讯App,从这几步开始
  12. Gradle 插件Debug调试
  13. 路由跟踪之tcptraceroute IP延时之tcpping
  14. SketchUp插件|自然散射 (Skatter 2)插件最新版免费下载及介绍(草图大师模型散布)
  15. 参考文献,bib文件格式
  16. 辽宁电网容载比问题及合理取值研究
  17. Anaconda多环境python管理(创建、删除、复制环境)
  18. java获取时间的年月日时分秒_Java 获取当前时间的年月日时分秒
  19. 中点画线法c语言程序,计算机图形学 :中点画圆法
  20. android 自定义圆形进度条拖动样式,android自定义圆形进度条

热门文章

  1. QT使用AES加密解密
  2. Scala快速入门(适用于学习Spark)
  3. 执行mvn clean报错Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could
  4. OSError: Unable to create file
  5. 战士的升级速度不可能同法师相比,道士相比也有一定差距
  6. ORID方法在敏捷中的利用,关于敏捷迭代
  7. 计算机word排版素材,WORD基础排版素材
  8. 在线免费服务器,免费web服务器Tomcat
  9. 通过PD4ML把html转pdf(包含显示页眉页脚,插入图片,显示页数)
  10. 洛谷P1957 口算练习题 题解