文档详情

2019数据结构C++第二章第5讲 .pptx

发布:2020-05-14约4.1千字共48页下载文档
文本预览下载声明
第二章 线性表;练习;前插法建立单链表;template class T void inputFront (T endTag, ListT L) { LinkNodeT *newNode, *newF; E val; newF = new LinkNodeT; L.setFirst (newF); //first-link默认值为NULL cin val; while (val != endTag) { newNode = new LinkNodeT(val); newNode-link = newF-link; //插在表前端 newF-link = newNode; cin val; } }; ;后插法建立单链表;6;有了基本的操作, 如何解决一个具体的问题?;How to solve a new program? It is a simple method.;程序model;多项式链表的相加(1.表示,2.计算);多项式链表的相加(1.表示,2.计算);多项式(polynomial)类的链表定义;13;14;15;16;17;18;19;当pa或pb指针中有一个为NULL,则把另一个链表的剩余部分加入到C链。 void Add(Polynomal A, Polynomal B, Polynomal C) { //友元函数:两个带表头结点的按升幂排列的 //多项式链表的头指针分别是 A.first 和 B.first, //返回的是结果多项式链表 C. Term *pa, *pb, *pc, *p; float temp; pc = C.first; //结果链尾指针 pa = A.first-link; //A链检测指针 pb = B.first-link; //B链检测指针 while (pa != NULL pb != NULL) ; if (pa-exp == pb-exp) { //对应项指数相等 temp = pa-coef + pb-coef; if ( fabs(temp) 0.001) pc = pc-InsertAfter(temp, pa-exp); pa = pa-link; pb = pb-link; } else if (pa-exp pb-exp) { //pa指数小 pc = pc-InsertAfter(pa-coef, pa-exp); pa = pa-link; } else { //pb指数小 pc = pc-InsertAfter(pb-coef, pb-exp); pb = pb-link; } ; p = (pa != NULL)? pa : pb; //p指示剩余链 while (p != NULL) { pc = pc-InsertAfter(p-coef, p-exp); //两步 赋值 p = p-link; } };; p = (pa != NULL)? pa : pb; //p指示剩余链 while (p != NULL) { InsertAfter(pc, p-coef, p-exp); pc=pc-next; p = p-link; } };;最后,修改多项式(polynomial)类的链表定义,添加修改的函数;循环链表的示例 带表头结点的循环链表 ;循环链表类的定义;template class T //链表类定义 class CircList : public LinearListT { private: CircLinkNodeT *first, *last; //头指针, 尾指针 public: CircList(const T x); //构造函数 CircList(CircListT L); //复制构造函数 ~CircList(); //析构函数 int Length() con
显示全部
相似文档