数据结构实验报告1.1_第1页
数据结构实验报告1.1_第2页
数据结构实验报告1.1_第3页
数据结构实验报告1.1_第4页
数据结构实验报告1.1_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一 线性表的基本操作及其应用一、实验目的1、帮助读者复习C+语言程序设计中的知识。2、熟悉线性表的逻辑结构。3、熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉链表的操作为侧重点。二、实验内容 多项式的表示及相加 问题描述设计一个算法,以实现一元稀疏多项式的加法运算。基本要求(1)输入并建立多项式;(2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,cn,en,其中n是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列;(3)多项式a和b相加,建立多项式a+b。测试数据由学生任意指定。实现提示用带表头结点的单链表存储多项式。选作内容多项式a和b相减,建

2、立多项式a-b。三、实验前的准备工作1、掌握线性表的逻辑结构。2、掌握线性表的链式存储结构。3、熟练掌握线性表的插入、删除等操作。主要代码及解析#include<iostream>using namespace std;/结点结构struct Nodeint data; /系数int No; /次方数Node*next; ;/创建链表,tail是链表的尾指针,d、n分别给data和No赋值Node* CreateStr(Node*tail,int d,int n)if(d=0) /如果系数为,则不增加结点return tail; /返回尾指针,以便可以连续增加结点Node*q=ne

3、w Node;/系数不为,增加结点q->data=d;q->No=n;q->next=NULL; tail->next=q;tail=q;return tail;int main()Node*str1=new Node;Node*str2=new Node; /申请两个结点 /分别给两个结点赋值int m,n;Node*q=str1;cout<<"第一个方程式:"<<endl;while(cout<<"系数:",cin>>m) /输入结点系数及次方数,循环结束条件是输入的m不是int

4、型cout<<"次方数:"cin>>n;Node*p=new Node;p->data=m;p->No=n;q->next=p;q=p;q->next=NULL;/最后结点的next指针赋值为空cin.clear(); /清除错误状态 cin.ignore();/跳过无效数据,以便继续完成第二个方程式q=str2;/创建第二个方程式cout<<"第二个方程式:"<<endl;while(cout<<"系数:",cin>>m)cout<

5、<"次方数:"cin>>n;Node*p=new Node;p->data=m;p->No=n;q->next=p;q=p;q->next=NULL;cin.clear(); /清除错误状态 cin.ignore();/跳过无效数据Node*str=new Node;/创建储存合并后方程式链表q=str;Node*s1=str1->next,*s2=str2->next; /进行方程式的合并(注:设定两个方程式的次方数都是递增排列的)/合并后的方程式的次方数也是递增的while(str1&&str2)if

6、(str1->No<str2->No)q=CreateStr(q,str1->data,str1->No);str1=str1->next;else if(str1->No>str2->No)q=CreateStr(q,str2->data,str2->No);str2=str2->next;else/如果两个方程式的从次方数相等则进行合并后再给str增加结点q=CreateStr(q,str1->data+str2->data,str1->No);str1=str1->next;str2=str2

7、->next;/*while(str1&&str2)的结束条件分为三种1、str1=NULL;str2!=NULL,此时将str2中剩余结点依次插入str中2、str1!=NULL;str2=NULL,情况类似于,不再赘述3、str1=str2=NULL,说明str1和str2中的结点都已经插入str中,下面的两个while循环则不必再执行*/while(str1)q=CreateStr(q,str1->data,str1->No);str1=str1->next;while(str2)q=CreateStr(q,str2->data,str2->No);str2=str2->next;Node*p=str->next->next;while(p)/将合并后的方程式依次输出cout<<p->data<<"X"<<p->No<<" "p=p->next;cout<<endl;return 0;测试数据第一组测试数据:第二组测试数据 :输入的数据如果不是int类型则表示输入结束,如果是int 类型则可以一直进行输入,以完成方程式的创建。输入结束后,则输出方程式1和方程式2的和,其中X前边表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论