有一个带头结点的单链表L,设计一个算法使其元素递增有序排列 40
书上的代码有点没看懂,希望高手解答,代码如下:voidsort(Linklist*&L){LinkList*p=L->next,*q,*r;if(p!=NULL){r=p...
书上的代码有点没看懂,希望高手解答,代码如下:
void sort(Linklist *&L)
{
LinkList *p=L->next, *q, *r;
if(p!=NULL)
{
r=p->next;
p->next=NULL;
p=r;
while(p!=NULL)
{ r=p->next;
q=L;
while(q->next!=NULL&&q->next->data<p->data)
q=q->next;
p->next=q->next;
q->next=p;
p=r;
}
}
}
这个代码段我觉得得不到递增排序的效果,比如说原来链表里存放的是1,3,4的话,我觉得运行完以后变成1,4,3 展开
void sort(Linklist *&L)
{
LinkList *p=L->next, *q, *r;
if(p!=NULL)
{
r=p->next;
p->next=NULL;
p=r;
while(p!=NULL)
{ r=p->next;
q=L;
while(q->next!=NULL&&q->next->data<p->data)
q=q->next;
p->next=q->next;
q->next=p;
p=r;
}
}
}
这个代码段我觉得得不到递增排序的效果,比如说原来链表里存放的是1,3,4的话,我觉得运行完以后变成1,4,3 展开
10个回答
展开全部
/* 插入排序法 */
void sort(Linklist *&L)
{
LinkList *p=L->next, *q, *r;
if(p!=NULL)
{
/* 把链表分成两条,一条已经排序好了(L),一条待排序(p)*/
r=p->next;
p->next=NULL;
p=r;
/* 对于所有待排序的元素 */
while(p!=NULL)
{
/*把p链表的第搭樱一个元素插入到L,并且将它从p中移除*/
r=p->next; //r指向p的第二个元素
/* 找到合适的插入点 */
q=L;
知碧丛 while(q->next!=NULL && q->next->data < p->data)
慧芹q=q->next;
/* 在q后面插入p */
p->next=q->next;
q->next=p;
/* 现在p的第一个元素已经被移到L中合适的位置了 */
p=r;
}
}
}
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
没有问题,
while(q->next!=NULL&&q->next->data<p->data)
q=q->next;
是一个循环,一直跑到有序数没隐组的最后,这敬晌个亮察锋算法很抽象,我看了很久才懂。
while(q->next!=NULL&&q->next->data<p->data)
q=q->next;
是一个循环,一直跑到有序数没隐组的最后,这敬晌个亮察锋算法很抽象,我看了很久才懂。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建察冲议换本书,这书上的代码写的叫个啥玩意儿啊,什么p,q,r,L的弯没判,名字都埋改不会起,一看就不是什么好书。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void Insert(L, node){
var vNodeNext
for vCurNode in L{
if(vCurNode.Value >= node.Value){ /游此/升序
//亩磨轮if(vCurNode.Value >= node.Value){ //降序
vNodeNext = vCurNode.Next
vCurNode.Next = Node
Node.Next = vNodeNext
exit
}
}
}
每次插入元素都通迅信过这个insert插入
var vNodeNext
for vCurNode in L{
if(vCurNode.Value >= node.Value){ /游此/升序
//亩磨轮if(vCurNode.Value >= node.Value){ //降序
vNodeNext = vCurNode.Next
vCurNode.Next = Node
Node.Next = vNodeNext
exit
}
}
}
每次插入元素都通迅信过这个insert插入
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |