关于数据结构单链表的题,给定两个多项式,实现多项式的相加算法,

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/03 05:45:01

关于数据结构单链表的题,给定两个多项式,实现多项式的相加算法,
关于数据结构单链表的题,给定两个多项式,实现多项式的相加算法,

关于数据结构单链表的题,给定两个多项式,实现多项式的相加算法,
这是Java的:
public class Test {
public static void main(String[] args) {
try{
LinkList list1 = new LinkList();
LinkList list2 = new LinkList();
LinkList list3 = null;

list1.addAt(0, new Item(1, 5));
list1.addAt(1, new Item(-1.5, 3));
list1.addAt(2, new Item(1, 1));

list2.addAt(0, new Item(0.5, 5));
list2.addAt(1, new Item(0.5, 4));
list2.addAt(2, new Item(1.5, 3));
list2.addAt(3, new Item(3, 0));

list3 = mergeLinkList(list1, list2);

System.out.println("一元多项式的相加过程:");
list1.listAll();
System.out.println(" + ");
list2.listAll();
System.out.println(" = ");
list3.listAll();
}
catch(Exception e){
e.printStackTrace();
}
}

//两个一元多项式相加,返回新的一元多项式
public static LinkList mergeLinkList(LinkList list1, LinkList list2){
int i = 0;
Item item = new Item();
Node curr1, curr2;
LinkList list3 = new LinkList();

curr1 = list1.getHead().getNext();
curr2 = list2.getHead().getNext();
while(curr1 != null && curr2 != null){
if(curr1.getData().getExp() > curr2.getData().getExp()){
item = curr1.getData();
list3.addAt(i, item);
curr1 = curr1.getNext();
i++;
}
else if(curr1.getData().getExp() < curr2.getData().getExp()){
item = curr2.getData();
list3.addAt(i, item);
curr2 = curr2.getNext();
i++;
}
else{
item = new Item(curr1.getData().getCoef() + curr2.getData().getCoef(), curr1.getData().getExp());
if(item.getCoef() != 0){
list3.addAt(i, item);
i++;
}
curr1 = curr1.getNext();
curr2 = curr2.getNext();
}
}
while(curr1 != null){
item = curr1.getData();
list3.addAt(i++, item);
curr1 = curr1.getNext();
}
while(curr2 != null){
item = curr2.getData();
list3.addAt(i++, item);
curr2 = curr2.getNext();
}

return list3;
}
}
/**
* 一元多项式的一般项类
*/
class Item{
private double coef; //一元多项式的一般项的系数
private int exp; //一元多项式的一般项的指数

public Item(){
this.coef = 0.0;
this.exp = 0;
}

public Item(double coef, int exp){
this.coef = coef;
this.exp = exp;
}

public double getCoef(){
return this.coef;
}

public void setCoef(double coef){
this.coef = coef;
}

public int getExp(){
return this.exp;
}

public void setExp(int exp){
this.exp = exp;
}
}
/**
* 链表结点类
*/
class Node{
private Item data;
private Node next; //链表结点的指针域,指向直接后继结点

public Node(){
data = null;
next = null;
}

public Node(Item data, Node next){
this.data = data;
this.next = next;
}

public Item getData(){
return this.data;
}

public void setData(Item data){
this.data = data;
}

public Node getNext(){
return this.next;
}

public void setNext(Node next){
this.next = next;
}
}
/**
* 链表类
*/
class LinkList{
private Node head = null; //头结点指针
private int size = 0;

public LinkList(){
head = new Node();
size = 0;
}
//在i位置插入元素elem
public boolean addAt(int i, Item elem) {
if(i < 0 || i > size){
return false;
}
Node pre,curr;
int pos;
for(pre=head; i>0 && pre.getNext()!=null; i--,pre=pre.getNext());
curr = new Node(elem, pre.getNext());
pre.setNext(curr);
size++;
return true;
}

//删除i位置的元素
public boolean removeAt(int i) {
if(i < 0 || i >= size){
return false;
}

Node pre,curr;
for(pre=head; i>0 && pre.getNext()!=null; i--,pre=pre.getNext());
curr = pre.getNext();
pre.setNext(curr.getNext());
size--;
return true;
}

//根据值value查询结点是否存在,若存在返回位置,否则返回-1
public int findByValue(Item value){
Node curr;
int pos;
for(pos=0,curr=head.getNext(); curr!=null; pos++,curr=curr.getNext()){
if(curr.getData().toString().equals(value.toString())){
break;
}
}

if(curr==null){
return -1;
}
return pos;
}

public Node getHead(){
return this.head;
}

public void setHead(Node head){
this.head = head;
}

public int getSize(){
return this.size;
}

public boolean isEmpty(){
return (size==0);
}

public void listAll(){
for(Node curr=head.getNext(); curr!=null; curr=curr.getNext()){
System.out.print("(" + curr.getData().getCoef() + ", " + curr.getData().getExp() + ")\t");
}
System.out.println();
}
}

关于数据结构单链表的题,给定两个多项式,实现多项式的相加算法, 数据结构(C语言)用单链表存储一元多项式,并实现两个多项式的相加运算 数据结构关于图的一道题 关于算法与数据结构的一道题 两道运算题,关于数据结构的 设计一个一元多项式简单的计算器(数据结构C语言版)急要求:一元多项式计算器的基本功能定为 (1) 建立多项式 (2) 输出多项式 (3) 两个多项式相加,建立并输出和多项式 (4) 两个多项式相减 求高手帮帮忙:关于数据结构课程设计的问题描述:设有两个带表头的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理.实现要求:⑴ 输入并建立多项式;⑵ 输出多项式, 【数据结构】 实现两个多项式的相加、减.要求:输出两个多项式原式,以及计算结果.用C语言…… 数据结构课程设计(C语言版) 一元稀疏多项式的运算问题描述:设用两个数组表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理.***注意使用数组,不是链表哦~~!***实现要求:⑴ 输 数据结构的二元多项式计算要求:1.能够按照指数和升序排列建立并输出多项式;2.能够完成两个多项式的加法、减法、乘法,并将结果存储于一个新的多项式中; 如何用C语言实现多项式的加法和乘法给定两个多项式,用程序实现这两个多项式的相加和相乘.要求多项式的系数只能取1或者0;同时满足1+1=0;例如给定多项式(1+X)*(1+X)=X2.基本要求:(1)实 求一份关于数据结构的实验报告 关于 数据结构 下列说法正确的是: 数据结构关于结点删除的问题 数据结构题,有会做的吗? 数据结构:用链表实现两个多项式相加,用C++或者C语言实现多项式相加,求完整代码输入:第一行输入包含两个整数m,n后续为m行和n行数据m,n分别代表两个多项式的项数后续每一行代表多项式 给定两个多项式,实现两个多项式相加算法.用c语言编程第一行输入包含两个整数m,n后续为m行和n行数据m,n分别代表两个多项式的项数后续每一行代表多项式的项,包含a,b两个数据,表示该项的系 刚开始学数据结构(C语言),学到线性链表这一节 有个题目是关于多项式相加 不懂 求助刚开始学数据结构(C语言),学到线性链表这一节有个题目是关于多项式相加的 要用到结点A(x)=7+11x+22x