◆2.11② 设顺序表L 中的数据元素递增有序。 试写一算法,将x 插入到L 的适当位置上,并保 持该表的有序性。 要求实现下列函数: void InsertOrderList(SqList &L, ElemType x) /* 在有序的顺序表 L 中保序插入数据元素 x */ 顺序表类型定义如下: typedef struct { ElemType *elem; int length; int listsize; } SqList; void InsertOrderList(SqList &L, ElemType x) // 在有序的顺序表 L 中保序插入数据元素 x { int i=0,j; while(L.elem[i]
i;j--) { L.elem[j]=L.elem[j-1]; } L.elem[i]=x; L.length+=1; } ◆2.12③ 设A=(a1,…,am)和 B=(b1,…,bn)均为有序顺序表, A'和 B'分别为 A 和 B 中除去最大共同前缀后的子表(例如, A=(x,y,y,z,x,z),B=(x,y,y,z,y,x,x,z),则两者中最大 的共同前缀为(x,y,y,z), 在两表中除去最大共同前缀后 的子表分别为 A'=(x,z)和 B'=(y,x,x,z))。若 A'=B'=空表, 则 A=B;若 A'=空表,而 B'≠ 空表,或者两者均不为空表, 且 A'的首元小于 B'的首元,则 AB。试写一个比 较 A 和 B 大小的算法。(注意:在算法中,不要破坏原表A 和 B,也不一定先求得 A'和 B'才进行比较)。 要求实现下列函数: char Compare(SqList A, SqList B); /* 比较顺序表A 和 B, */ /* 返回'<', 若 A', 若 A>B */ 顺序表类型定义如下: typedef struct { ElemType *elem; int length; int listsize; } SqList; char Compare(SqList A, SqList B) // 比较顺序表A 和B, // 返回'<', 若A', 若A>B { int i=0; while(A.elem[i]==B.elem[i]&&iB.elem[i]||i==B.length) return '>'; } 2.13② 试写一算法在带头结点的单链表结构上实现线性表操作 Locate(L,x)。 实现下列函数: LinkList Locate(LinkList L, ElemType x); // If 'x' in the linked list whose head node is pointed // by 'L', then return pointer pointing node 'x', // otherwise return 'NULL' 单链表类...