数据结构_实验1_线性表的基本操作

本人为编程小白,实验会有很多错误和不规范的地方,欢迎指出,仅供借鉴

  • 线性表基本操作的实现,分别采用数组和链表结构实现线性表,实现线性表的基本操作。
  • 利用实现的线性表,存储一元n次多项式,完成多项式的输入、显示;实现多项式的加法操作

需求分析

本实验将分别采用数组和链表结构实现线性表,利用实现的线性表,存储一元n次多项式,完成多项式的输入、显示;实现多项式的加法操作
测试输入:链表长度:5 自变量:x=5
数据结构_实验1_线性表的基本操作_第1张图片
测试输出:2710

概要设计

说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。

数组

数据结构_实验1_线性表的基本操作_第2张图片

链表

数据结构_实验1_线性表的基本操作_第3张图片

详细设计

数组

伪代码:

for(int i=0;i<length;i++)
{
     
	cin>>p.coef>>p.expon;
}
for(int i=0;i<length;i++)
{
     
	num+=p[i].coef*pow(x,p[i].expon);
}

程序框图:
数据结构_实验1_线性表的基本操作_第4张图片

链表

伪代码:

p=l;
while(p->next!=NULL)
{
     
cin>>p->coef>>p->expon;
p=p->next;
}
p=l;num=0;
while(p->next!=NULL)
{
     
num+=p[i].coef*pow(x,p[i].expon);
}

程序框图:
数据结构_实验1_线性表的基本操作_第5张图片

调试分析

链表调试过程中出现了所有数据输入后多项式的和求不出的情况,原因为没注意到头结点,导致NULL错误赋值输不出结果

用户使用说明

按照提示输入就行

测试结果

数组

数据结构_实验1_线性表的基本操作_第6张图片

链表

数据结构_实验1_线性表的基本操作_第7张图片

源代码

数组

#include 
#include 
using namespace std;
//创建结构体,用coef储存系数,expon储存次数 
struct Poly{
     
	double coef;
	int expon;
};
int main()
{
     

	//输入多项式的项数
	cout<<"请输入多项式的项数:"<<endl;
	int length;
	cin>>length;
	//创建多项式 
	Poly p[100];
	//储存系数和指数
	for(int i=0;i<length;i++){
     
		cout<<"现在分别输入第"<<i+1<<"个数的系数和指数"<<endl;;
		cin>>p[i].coef>>p[i].expon;
	} 
	//输入自变量的值
	cout<<"下面请输入自变量的值"<<endl;
	double x;
	cin>>x;
	//计算多项式的和
	double num=0;
	for(int i=0;i<length;i++){
     
		num+=p[i].coef*pow(x,p[i].expon);
	}
	//输出结果
	cout<<"多项式的和为:"<<num<<endl; 
	return 0;
}

链表

#include 
#include 
using namespace std;
//创建结构体,用coef储存系数,expon储存次数 
struct Node{
     
	int coef;
	int expon;
	Node *next;
};
//申请内存空间存放当前项 
Node* createNode(int coe,int exp){
     
	Node* node = new Node;
	node->coef=coe;
	node->expon=exp;
	return node;
}
//释放多项式申请的空间
void DestroyPoly(struct Node* p)
{
     
    Node* temp;
    while(p!=NULL){
     
        temp=p;
        p=p->next;
        delete[] temp;
    }
}
//创建多项式
Node* createPoly(){
     
    int n;//项数
    int coe;//系数
	int exp;//指数 
	Node* temp= new Node;//临时 
	Node* p = new Node;//项 
    temp=p;
    //输入链表长度
	cout<<" 请输入链表的长度"<<endl; 
    cin>>n;
    for(int i=0;i<n;i++){
     
       cout<<" 现在分别输入第"<<i+1<<"项的系数和指数"<<endl; 
       cin>>coe>>exp;
       temp->next=createNode(coe,exp);
       temp = temp->next;
    }
    temp->next = NULL;
    return p;
}
void polyAdd(Node* p){
     
	Node* temp;
	temp=p->next;
	//输入自变量的值
	cout<<"现在输入自变量的值"<<endl;
	double x;
	cin>>x; 
	double sum=0;
	//计算并将结果储存在sum中 
	while(temp!=NULL){
     
		sum+=temp->coef*pow(x,temp->expon);
		temp=temp->next;
	}
	//输出结果 
	cout<<"多项式的和为:"<<sum<<endl; 
}
int main()
{
     
	//创建多项式 
	Node* poly;
	poly = createPoly();
	//计算多项式的和
	polyAdd(poly); 
	//释放空间 
	DestroyPoly(poly);
	return 0;
}

你可能感兴趣的:(数据结构实验,数据结构,链表)