1 void delmaxnode(LinkNode* &L) 2 { 3 LinkNode* p = L->next, *pre = L, *maxp = p, *maxpre = pre; 4 while(p != NULL) //用p扫描整个单链表,pre始终指向其前驱结点 5 { 6 if(maxp->data < p->data) //若找到一个更大的结点 7 { 8 maxp = p; //更新maxp 9 maxpre = pre; //更新maxpre 10 } 11 pre = p; //p、pre同步后移一个结点 12 p = p->next; 13 } 14 maxpre->next = maxp->next; //删除maxp结点 15 free(maxp); //释放maxp结点 16 }
1 void ListInsert(SqList* &L, ElemType e) 2 { 3 int i=0,j; 4 while(i<L -> length && L-> data[i]<e) 5 i++ ; //查找值为e的元素 6 for (j= ListLength(L);j>i;j-- ) //将data[i及后面的元素后移一个位置 7 L-> data[j]=L-> data[j-1]; 8 L-> data[i]=e; 9 L -> length++ ; //有序顺序表的长度增1 10 }
从头开始扫描有序顺序表L,通过比较找到插人位置i,将data[i]及后面的元素后移一个位置,在该位置插人元素e。
原文:https://www.cnblogs.com/bestfairy/p/10597540.html