已知一个有序单链表(从小到大排列),表头指针为head,编写一个函数向该单链表中插入一个元素为x的
已知一个有序单链表(从小到大排列),表头指针为head,编写一个函数向该单链表中插入一个元素为x的节点,使插入后该单链表仍有序。
已知一个有序单链表(从小到大排列),表头指针为head,编写一个函数向该单链表中插入一个元素为x的节点,使插入后该单链表仍有序。
【Test-10-2】直接插入排序算法可以基于链表来实现。假设有一个数据随机排列的带表头结点的单链表,表头指针为 head,下面算法的功能是:一个基于链表的直接插入排序算法,排序后的单链表的表头指针仍然是 head。请在空白处填入正确的语句。 const ElemType maxValue = ……; //自行设定最大值, 应大于链表中任何数据值 void insertSort(LinkList *&head) { LinkNode *pre, *p, *q, *s = ______①______, *t; if(s == NULL) return; _____②_______; head->data = _______③_______; q = ______④________; s->next = head; //形成一个元素的有序循环链表 while(q != NULL) { pre = head; p = head->next; while(__________⑤________) { pre = p; p = p->next; } s = q; q = q->next; s->next = p; pre->next = s; if(s->data > t->data) t = s; } t->next = NULL; }
设A与B分别为两个带有头结点的顺序循环链表(所谓有序是指链接点按数据域值大小链接,本题不妨设按数据域值从小到大排列),list1和list2分别为指向两个链表的指针。请写出并在计算机上实现将这两个链表合并为一个带头结点的有序循环链表的算法。
设A与B分别为两个带有头结点的有序循环链表(所谓有序是指链接点按数据域值大小链接,本题不妨设按数据域值从小到大排列),listl和list2分别为指向两个链表的指针。请写出并在计算机上实现将这两个链表合并为一个带头结点的有序循环链表的算法。
假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原表(即A表和B表)的结点空间构造C表。 // 将合并逆置后的结果放在C表中,并删除B表 Status ListMergeOppose_L(LinkList &A,LinkList &B,LinkList &C){ LinkList pa,pb,qa,qb; pa=A; pb=B; qa=pa; // 保存pa的前驱指针 qb=pb; // 保存pb的前驱指针 pa=pa->next; pb=pb->next; A->next=NULL; C=A; while(pa&&pb){ if(pa->data<pb-> data){ qa=pa; pa=pa->next; qa->next=A->next; A->next=qa; } else{ qb=pb; pb=pb->next; //将当前最小结点插入A表表头 A->next=qb; } } while(pa){ qa=pa; pa=pa->next; qa->next=A->next; A->next=qa; } while(pb){ qb=pb; pb=pb->next; qb->next=A->next; A->next=qb; } pb=B; free(pb); return OK; }
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!