社区
C语言
帖子详情
请教,谁能给个单链表插入排序的例子(由大到小)
zhangzhihua
2004-09-29 08:37:20
RT
3X
...全文
445
11
打赏
收藏
请教,谁能给个单链表插入排序的例子(由大到小)
RT 3X
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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;
}
算法面试题
1.把二元查找树转变成排序的双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \4 8 12 16 转换成双向链表4=6=8=10=12=14=16。 首先我们定义的二元查找树 节点的数据结构如下: struct BSTreeNode{ int m_nValue; // value of...
算法面试题总结
1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 首先我们定义的二元查找树 节点的数据结构如下: struct BSTree
面试题01
1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 首先我们定义的二元查找树 节点的数据结构如下: struct BSTree
数据结构经典算法面试题
转自:http://hi.baidu.com/geogre_jsj/blog/item/e4b98fd2aab5aa3611df9b92.html 由于这些题,实在太火了。所以,应广大网友建议要求,在此把之前已整理公布的前80题, 现在,一次性分享出来。此也算是前80题第一次集体亮相。 此些题,已有上万人,看到或见识到,若私自据为己有,必定为有知之人识破,付出代价。 ...
微软公司等数据结构+算法面试100题(第1-100题)全部出炉
微软等公司数据结构+算法面试100题(第1-100题)首次完整亮相 作者:July、2010年12月6日。更新:现今,这100题的答案已经全部整理出来了,微软面试100题2010年版全部答案集锦:http://blog.csdn.net/v_july_v/article/details/6870251。关于此100道面试题的所有一切详情,包括答案,资源
C语言
70,037
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章