文档介绍:《数据结构与算法》课程实验线性表的操作实验报告题目用数组和链表实现多项式的加法运算班级软件060121号姓名金泳学号2101060227完成日期2007-11-:用数组和链表两种方法实现两个多项式的相加输入的形式和输出的范围是:(保证多项式的各项是按照降序排列的)输入第一个多项式:此多项式共(3)项:*X^(4)+*X^(2)+*X^(1)输入第二个多项式:此多项式共(2)项:-*X^(4)+*X^(2)相加后的多项式为:此多项式共(3)项:*X^(4)+*X^(2)+*X^(1)://初使化顺序表voidInitList(SqList*L)//求顺序表的长度intListLength(SqList*L)//取得顺序表中第I个元素,并用e返回其值,若指定位置不正确则返回0intGetElem(SqList*L,inti,ElemType&e)//在表中第i个位置插入值为e的元素,若位置指定不正确则返回0intListInsert(SqList*L,inti,ElemTypee)链表抽象数据类型的定义:#include<>#include<>typedefcharElemType;typedefstructLNode /*定义单链表结点类型*/{ ElemTypedata;structLNode*next;}LinkList;//初使化链表,且此链表带有头结点voidInitList(LinkList*L)//销毁此链表,通过遍历链表的每个元素来释放每一个结点所占的内存voidDestroyList(LinkList*L)//判断链表是否为空intListEmpty(LinkList*L)//通过遍历链表返回其长度intListLength(LinkList*L)//遍历链表从头至尾显示链表中的每个结点中的数据voidDispList(LinkList*L)//获得指定位置i处的结点值,并用e返回其值;若链表为空则返回0intGetElem(LinkList*L,inti,ElemType&e)//获得值为e的结点在链表中的位置;若元素不存在则返回0intLocateElem(LinkList*L,ElemTypee)//在链表的第i个结点处插入值为e的结点;若指定位置i不正确则返回0intListInsert(LinkList*L,inti,ElemTypee)//在链表的第i个位置删除值为e的结点,并用e返回其值;若位置i不正确,则返回0intListDelete(LinkList*L,inti,ElemType&e):#include<>#include<>#defineMaxSize50typedefcharElemType;typedefstruct{ ElemTypeelem[MaxSize]; intlength;}SqList;//初使化顺序表intListEmpty(SqList*L){ return(L->length==0);}//求顺序表的长度intListLength(SqList*L){ return(L->length);}链表抽象数据类型的定义:#include<>#include<>typedefcharElemType;typedefstructLNode /*定义单链表结点类型*/{ ElemTypedata;structLNode*next;}LinkList;//初使化链表,且此链表带有头结点voidInitList(LinkList*L){ L=(LinkList*)malloc(sizeof(LinkList)); /*创建头结点*/ L->next=NULL;}//销毁此链表,通过遍历链表的每个元素来释放每一个结点所占的内存voidDestroyList(LinkList*L){ LinkList*p=L,*q=p->next; while(q!=NULL) { free(p); p=q; q=p->next; } free(p);}//判断链表是否为空intListEmpty(LinkList*L){ return(L->next==NULL);}//通过遍历链表返回其长度intListLength(LinkList*L){ LinkList*p=L;inti=0; while(p->next!=NULL) { i++; p=p->next; } return(i);}//遍历链表从头至尾显示链表中的每个结点中的数据voidDispList(LinkList*L