文档介绍:贵州大学计算机科学与技术学院
计算机科学与技术系上机实验报告
课程名称:数据结构
班级:计科093
实验日期:2011-3-22
姓名:吴征
学号:0908060107
指导教师:程欣宇
实验序号:一
实验成绩:
一、实验名称
线性表及其应用
二、实验目的及要求
1、熟悉链表的创建,链表结点查找、插入和删除;
2、理解链表用于存储线性表的优势和劣势;
3、掌握利用链表存储一元多项式的数据结构,及其运算操作。
三、实验环境
Visual C++
四、实验内容
1、输入并建立多项式;
2、输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,….,cn,en, 其中n是多项式的项数,ci和ei分别是第I项的系数和指数,序列按照指数降序排列;
3、多项式a和b相加,建立多项式a+b;
4、多项式a和b相减,建立多项式a-b。
五、算法描述及实验步骤
使用链表存储一元多项式c1 X e1+ c2 X e2+…+ cn X en如下图所示:
头结点
c1
e1
c2
e2
cn
^
en
如何实现这种线性链表表示的多项式的加法运算?
根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”中的一项;对于两个一元多项式中所有指数不相同的项,则分别复抄到“和”多项式中去。
实验步骤:
1、
2、
3、
六、调试过程及实验结果
七、总结
多项式系数小的
八、附录
#pragma once
#include <iostream>
struct node
{
int exp;//指数
double coef;//系数
node *next;//指针域
};
class poly
{
private:
node * head;
public:
poly();
void in1poly();
void in2poly(int,int[],double[]);
void delpoly();
void prtpoly();
poly operator +(poly &);
/*~poly(void);*/
};
#include ""
#include ""
#include "iostream"
using namespace std;
poly::poly()
{
head = NULL;
return ;
}
void poly::in1poly()
{
node *p,*k;
int e;
double c;
k=NULL;
cout<<"输入:系数指数。输入-1结束"<<endl;
cin>>c>>e;
while(e>=0)
{
p=new node;
p->exp=e;
p->coef=c;
p->next=NULL;
if(k==NULL)
head=p;
else
k->next = p;
k=p;
cin>>c>>e;
}
return ;
}
void poly::in2poly (int n,int e[],double c[])
{
int k;
node *p;
for(k=n-1;k>=0;k--)
{
p=new node;
p->coef=c[k];p->exp=e[k];
p->next = head;
head = p;
}
return;
}
void poly::delpoly()
{
node *p,*q;
q=head;
while(q!=NULL)
{
p=q->next;
delete q;
q=p;
}
head = NULL;
return ;
}
void poly::prtpoly()
{
node *k;
if(head==NULL)
cout<<"空表"<<endl;
k=head;
while(k!=NULL)
{
cout<<"("<<k->coef<<","<<k->exp<<")"<<endl;
k=k->next;
}
return;
}
poly poly::operator+(poly &p2)
{
poly p;
node *k,*q,*m,*n;
int e;
double c;
k=NULL;
m=head;
n= ;
whi