| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3551 人关注过本帖
标题:[求助]单链表插入排序
只看楼主 加入收藏
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
 问题点数:0 回复次数:23 
[求助]单链表插入排序

不懂!!
思想可能有问题!!
/*单链表插入排序*/
#include <stdio.h>
#include <malloc.h>

typedef struct node
{
int data;
struct node *next;
}*LinkList, ListNode;

void CreateList(LinkList *headPtr, LinkList *tailPtr);
void Insert_sort(LinkList *headPtr);/*插入排序*/
void VisitList(LinkList headPtr);


int main(void)
{
LinkList newhead = NULL, newtail = NULL;

CreateList(&newhead, &newtail);
VisitList(newhead);

Insert_sort(&newhead);
VisitList(newhead);

return 0;
}

void CreateList(LinkList *headPtr, LinkList *tailPtr)
{
int newdata;
LinkList newPtr = NULL;

printf("Enter one number:\n");
scanf("%d", &newdata);
while (newdata != 0)
{
newPtr = (LinkList)malloc(sizeof(ListNode));
if (newPtr == NULL)
{
exit(1);
}

newPtr -> data = newdata;
newPtr -> next = NULL;
if (*headPtr == NULL)
{
newPtr -> next = *headPtr;
*headPtr = newPtr;
}

else
{
(*tailPtr) -> next = newPtr;
}
newPtr -> next = NULL;
*tailPtr = newPtr;

printf("Enter one number:\n");
scanf("%d", &newdata);
}
}

void Insert_sort(LinkList *headPtr)
{
LinkList prev = NULL, cur = NULL, q = NULL, prev2 = NULL, cur2 = NULL;/*插入q*/
prev = *headPtr;
cur = prev -> next;
while (prev)
{

q = cur;/*将插入接点赋予q*/
cur = cur -> next;
prev -> next = q -> next;/*去除q*/

prev2 = *headPtr;/*对prev前的元素遍力一遍,找到q的位置并插入*/
while (prev2)
{
cur2 = prev2 -> next;
if (q -> data < (*headPtr) -> data)/* 小于头接点的情况*/
{
q -> next = *headPtr;
*headPtr = q;
}

else if (q -> data > prev2 -> data && q -> data < cur2 -> data)
{
q -> next = prev2 -> next;
prev2 -> next = q;
}

else if (q -> data > prev -> data)/*大于prev指向接点的情况*/
{
q -> next = prev -> next;
prev = q;
}

prev2 = prev2 -> next;
}
}
}

void VisitList(LinkList headPtr)
{
while (headPtr != NULL)
{
printf("%d ", headPtr -> data);
headPtr = headPtr -> next;
}
printf("\n");
}










[此贴子已经被作者于2006-5-30 20:51:59编辑过]

搜索更多相关主题的帖子: 单链 
2006-05-30 20:39
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
加上注解,理好格式

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-05-30 20:42
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 
改啦,老大.

奋斗改变一切!!
2006-05-30 20:53
cen110
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-5-30
收藏
得分:0 

1、已知一个数组a[7]={12,7,13,6,5,2,19},b[7]={3,8,2,9,10,13,0},数组c等于数组a,b对应元数之积。输出数组c中各元数的值。

2、输入四个正整数m、n、x和y,求出它们的最小公倍数。

3、实现函数fun(char b[],char a[])的功能是将字符串a中的所有字符复制到字符串b中,要求每复制三个字符之后插入一个空格。例如:在调用fun(b,a)函数之前给字符串a输入:ABCDEFGHIJK,调用函数之后,字符串b 中的内容则为ABC DEF GHI JK。



大哥帮我解下这题目好不?

2006-05-30 21:01
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 
俺可不强啊,再说我也没时间了,一会就走了!
这事你还是找 论坛  大哥去吧!!
你要不把你的帖子发到数据结构去,他是那的斑竹!

奋斗改变一切!!
2006-05-30 21:08
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 

给你写了第一个,最简单的
晕啦,第一个都搞不定!
#include <stdio.h>
#define N 7

int main(void)
{
int a[N] = {12, 7, 13, 6, 5, 2, 19};
int b[N] = {3, 8, 2, 9, 10, 13, 0};
int c[N], i;

for (i = 0; i < N; i++)
c[i] = 0;
for (i = 0; i < N; i++)
{
c[i] = a[i] * b[i];
}

for (i = 0; i < N; i++)
printf("%d ", c[i]);

return 0;
}


奋斗改变一切!!
2006-05-30 21:16
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 

第三个:
#include <stdio.h>
#define N 80

void fun(char b[],char a[]);

int main(void)
{
char a[N], b[N];

printf("Enter words:\n");
gets(a);

fun(b, a);
puts(b);

return 0;
}

void fun (char b[], char a[])
{
int i, j = 0, count = 0;

for (i = 0; i < N; i++)
{
b[j++] = a[i];
count ++;

if (count == 3)
{
b[j++] = ' ';
count = 0;
}

}
}


奋斗改变一切!!
2006-05-30 21:28
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 
求两个的最小公倍数还行,四个嘛,回去想想!

奋斗改变一切!!
2006-05-30 21:30
独角龙
Rank: 1
等 级:新手上路
帖 子:221
专家分:0
注 册:2006-5-5
收藏
得分:0 
K老大还没帮俺呢!?

奋斗改变一切!!
2006-05-30 21:30
cen110
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-5-30
收藏
得分:0 
谢了~大哥
2006-05-30 21:53
快速回复:[求助]单链表插入排序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017755 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved