| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 627 人关注过本帖
标题:[原创]解决了链表的合并问题
只看楼主 加入收藏
wfygowxf
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-11-4
收藏
 问题点数:0 回复次数:2 
[原创]解决了链表的合并问题

#include <stdio.h>
#include <malloc.h>
#define NULL 0
#define LEN sizeof(struct student)
typedef struct student
{int num;
int score;
struct student *next;
}node;
int n,sum=0;
node *create()//建表
{
node *p1,*p2,*head;

n=0;
p2=p1=(node*)malloc(LEN);
head=NULL;
scanf("%d%d",&p1->num,&p1->score);
while(p1->num!=0)
{
n++;
if(n==1) head=p1;
else
p2->next=p1;
p2=p1;
p1=(node*)malloc(LEN);
scanf("%d%d",&p1->num,&p1->score);
}
p2->next=NULL;
return(head);
}

node* insertsort(node *ahead,node *bhead)//插入升序默认排序
{ node *pa1,*pa2,*pb1,*pb2;
pa1=pa2=ahead;
pb1=pb2=bhead;

do
{
while(pb1->num>pa1->num&&pa1->next!=NULL)
{pa2=pa1;pa1=pa1->next;}
if(pb1->num<=pa1->num)
{
if(ahead==pa1)
ahead=pb1;
else pa2->next=pb1;
pb1=pb1->next;
pb2->next=pa1;
pa2=pb2;
pb2=pb1;
}
}while((pa1->next!=NULL&&pb1!=NULL)||(pa1->next==NULL&&pb1!=NULL&&pb1->num<=pa1->num));//
前一个表达式是来判断bhead是否插完了以及ahead是否到了链尾,如果到了就执行后一个表达式,否则断续插)(后一个表达式如果bhead中的值有比ahead链尾的值的值小,则插入,否则跳出)

if((pb1!=NULL)&&(pa1->next==NULL)&&(pb1->num>pa1->num))//这一条件就是用来判断ahead到了链尾,且bhead的当前值比ahead的尾值大,且pb1不是是空指针,则把ahead插入连接到pb1的当前值上.
pa1->next=pb1;
return(ahead);
}
void output(node *head)//输出
{
node *p;
p=head;
if(head!=NULL)
do
{
printf("%d,%d\n",p->num,p->score);
p=p->next;
}while(p!=NULL);
}
void main()
{
node *head1,*head2,*abhead;
printf("input the listone:\n");
head1=create();
sum+=n;
printf("output the list a:\n");
output(head1);

printf("input the listtwo:\n");
head2=create();
sum+=n;
printf("output the list b:\n");
output(head2);

abhead=insertsort(head1,head2);//合并
printf("output the unionlist \n");
output(abhead);
}

我终于解决了这个问题。好开心
这是谭浩强书上一的一道题,但是他的参考程序是错的!!!!
我改了好久才改好了


[此贴子已经被作者于2006-11-28 18:57:37编辑过]

搜索更多相关主题的帖子: 链表 node num student int 
2006-11-26 23:24
财鸟
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2006-11-2
收藏
得分:0 

你好好看看
你是怎么定义的!!!!!!!!!!!!!11

2006-11-27 17:09
wfygowxf
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-11-4
收藏
得分:0 

问题已解决

[此贴子已经被作者于2006-11-28 18:58:09编辑过]

2006-11-27 23:03
快速回复:[原创]解决了链表的合并问题
数据加载中...
 
   



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

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