请教,谁能给个单链表插入排序的例子(由大到小)

zhangzhihua 2004-09-29 08:37:20
RT
3X
...全文
445 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
527xm 2004-10-04
  • 打赏
  • 举报
回复
哎,只要他努力看就好了!
daylove 2004-09-30
  • 打赏
  • 举报
回复
来晚了,支持一下,
tengfei2005 2004-09-30
  • 打赏
  • 举报
回复
up
sbli 2004-09-30
  • 打赏
  • 举报
回复
up
greenteanet 2004-09-30
  • 打赏
  • 举报
回复
假如那个老师是这个版的某个高手,那这些学生不是很惨了啊!!!
computerwolf 2004-09-29
  • 打赏
  • 举报
回复
这是个请人写作业不要钱的地方啊!!
jobine 2004-09-29
  • 打赏
  • 举报
回复
/*带头链表直接插入排序*/
void InsertNode(LinkList &p, LinkList &q)
//将q插入到p后
{
LinkList t;

t = p->next;
p->next = q;
q->next = t;
}

void InsertSort(LinkList &L)
{
LinkList s, t, p, q;

p = L->next;
q = p->next;
while (q)
{
if (LT(p->data, q->data))
{
L->data = q->data;
t = q->next;
s = L;
while (LT(L->data, s->next->data) && (s->next != p))
{
s = s->next;
}
InsertNode(s, q);
q = t;
}
else
{
p->next = q;
p = q;
q = q->next;
}
}
p->next = NULL;
}
stonepeter 2004-09-29
  • 打赏
  • 举报
回复
果然成了做作业的地方。
kobefly 2004-09-29
  • 打赏
  • 举报
回复
不错,楼上的写的很好啊
其实单链表的操作还是比较简单的
注意节点的前后指针
以及NEXT的初值
jxhwei 2004-09-29
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

typedef struct Node //链表节点的结构
{
int a;
struct Node * next;
}Node;

void initlist(Node * p)//初始化链表,这是个表头,只存储链表本身的数据
{
p->a=0;
p->next=NULL;
}

void add(Node * p,int i) //增加新节点
{
Node * base,* temp=p->next; //base为新节点分配内存,temp用来遍历链表
base=(Node *)malloc(sizeof(Node));
base->a=i;

while(temp)
{
if(i>(temp->a)) //如果大于某个已经存在的节点,
{ //则把新节点插入到该节点前面。
base->next=temp->next;
temp->next=base->next;
p->a ++; //表长+1
return;
}

temp=temp->next;
}

base->next=NULL;//如果小于所有已经存在的节点,则执行下面的代码,
p->next=base; //把新节点插入到链表的最后。
p->a++;
return;

}

}

int main(void)
{
Node list;
int a;
list=NULL;

initlist(&list);

puts("please input:");
scanf("%d",&a);

add(&list,a);

return 0;
}
我随手写的,可能不太好。
hcj2002 2004-09-29
  • 打赏
  • 举报
回复
//创建一个保存多项式的链表,返回指向头结点的指针。多项式按指数降序排列
pPolyNode CreatePoly()
{
PolyNode *p,*q,*s,*head=NULL;
double coef;
int expn;

head=(pPolyNode)malloc( sizeof(PolyNode) );
if(head==NULL)
{
printf("Allocable memory fail!\n");
return NULL;
}
head->coef =0.0;
head->expn =0;
head->next =NULL;

printf("Please input Coefficient and exponent (intput 0 0 end):\n");
//scanf("%lf%d",&coef,&expn);
printf("Please input Coefficient:");
scanf("%lf",&coef);
printf("please input exponent:");
scanf("%d",&expn);


while( (long)coef !=0 && expn !=0 )
{
s = (pPolyNode)malloc(sizeof(PolyNode));
s->coef = coef;
s->expn = expn;

q=head->next ;
p=head;
while(q && expn <q->expn )
{
p=q;
q=q->next;
}

if(q== NULL || expn > q->expn )
{
p->next =s;
s->next =q;
}
else
{
q->coef+=coef;
}
//read next number
printf("Please input Coefficient:");
scanf("%lf",&coef);
printf("please input exponent:");
scanf("%d",&expn);
}
return head;

}

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧