归并排序-新手上路,链表学习中,问题是对功能函数不理解,问题已备注,请帮我在问题处写思路,尤其功能函数,谢谢!

问题描述

新手上路,链表学习中,问题是对功能函数不理解,问题已备注,请帮我在问题处写思路,尤其功能函数,谢谢!
//第九章章末习题第10题
#include//建立a b两链表包含学号成绩,把两个链表合并升序排列输出。求思路!
#include
#define LEN sizeof(struct student)

struct student
{
long num;
int score;

struct student * next;

};
struct student listalistb;
int nsum=0;

int main()
{
struct student * creat(void);//创建链表函数
struct student * insert(struct student struct student *);//合并排序函数
void print(struct student *);//输出函数
struct student * ahead * bhead
abh;
printf(""input list a:n"");
ahead = creat();
sum = sum + n;//此语句不理解,请兄台解释下
printf(""input list b:n"");
bhead = creat();
sum = sum + n;//此语句不理解
abh = insert(aheadbhead);
print(abh);
return 0;
}

struct student creat(void)
{
struct student * p1
p2* head;
n = 0;
p1 = p2 = (struct student * )malloc(LEN);
printf(""input number && score of student:n"");
printf(""if number is 0please stop inputing:n"");
scanf(""%ld%d""&p1->num&p1->score);
head=NULL;
while(p1->num != 0)
{
n = n+1;
if(n == 1)
head = p1;
else
p2->next = p1;
p2=p1;
p1 = (struct student *)malloc(LEN);
scanf(""%ld%d""&p1->num&p1->score);
}
p2->next = NULL;
return (head);
}
//建立insert函数用来合并两个链表

struct student * insert(struct student * ahstruct student * bh)//问题就是//这个功能函数直接不理解{    struct student * pa1* pa2* pb1* pb2;    pa2 = pa1 = ah;//此处不理解    pb2 = pb1 = bh;//此处不理解    do    {while((pb1->num > pa1->num) && (pa1->next != NULL))    {        pa2 = pa1;        pa1 = pa1->next;    }//此处不理解    if(pb1->num <= pa1->num)    {        if(ah == pa1)            ah = pb1;        else            pa2->next = pb1;        pb1 = pb1->next;        pb2->next = pa1;        pa2 = pb2;        pb2 = pb1;    }//此处不理解    }    while((pa1->next != NULL)||(pa1 == NULL) && (pb1 != NULL));    if((pb1 != NULL) && (pb1->num > pa1->num) && (pa1->next == NULL))        pa1->next = pb1;//此处不理解    return (ah);}//输出函数void print(struct student * head){    struct student * p;    printf(""There are %d records:n""sum);    p = head;    if(p != NULL)        do        {            printf(""%ld%dn""p->nump->score);            p = p->next;        }        while(p != NULL);}

解决方案

我建议楼主看看老谭的《C程序设计》第三版,里面对链表的各项操作讲的很清晰的,下面是前三版中将链表插入的操作,希望对楼主有帮助。
struct student *insert(struct student *head struct student *stud)
{ struct student *p0*p1*p2;
p1=head;
p0=stud;
if(head==NULL) {head=p0; p0->next=NULL;}
else{while((p0->num>p1->num) && (p1->next!=NULL))
{p2=p1; p1=p1->next;}
if(p0->num<=p1->num)

{ if(head==p1) head=p0;
else p2->next=p0; p0->next=p1;}
else {p1->next=p0; p0->next=NULL;}}
n=n+1;

return(head);
}

时间: 2025-01-19 02:25:32

归并排序-新手上路,链表学习中,问题是对功能函数不理解,问题已备注,请帮我在问题处写思路,尤其功能函数,谢谢!的相关文章

新手应该如何学习网站分析II

中介交易 SEO诊断 淘宝客 云主机 技术大厅 [引言] 这个端午节恐怕是有史以来最让我感到懊恼的.本来今天下午的航班去悉尼,但是因为自己的马虎,在出发前一刻发现签证有问题,无法成行!忙乱地退掉了航班和酒店,还错过了非常重要的会议,一塌糊涂-- 那么,把本该属于飞行的时间分享给我们的新手朋友,因为很多朋友给我发信,问我各种各样的问题,比如应该读什么书什么的.我很希望能够通过这个续篇帮助你们快速打开网站分析之门. [正文] 还是在去年,写了一篇文章<[读者来信]新手该怎样学习网站分析?>(htt

石小龙:新手如何快速学习竞价赚钱

操作竞价依靠的是自己的实战经验,而不是靠嘴巴吹出来的.在春节之前我在A5上发表了一篇文章<分析站长赔钱的四大原因>结果被各大网站进行转载上万次.很多人就加我的QQ,说龙哥我能不能跟你付费学习竞价,说实话以前没有想过带徒弟或者培训别人的. 因为我自己操作竞价赚钱,并不代表别人也能通过竞价赚到钱.后面有一个郑州的学员硬要跟我学,然后就带了一个学员,我当时想,如果他一个月时间没有赚到钱,就把钱退给他.结果跟我学习的第三天就出单了,只花了8元的广告费.后面更让我对我这套竞价技术自信,于是开始接着了带了

EAServer 新手上路----JaguarCts开发者必读

server SyBase EnterPrise Application Server新手上路 Sybase EAServer的文章也有一些,很少提及到开发中的一些细节问题.本人从事JaguarCts开发不久,遇到了许多细节问题,想来刚从事JaguarCts开发者也会遇上,以做参考,另则心中还存有许多问题,故撰此文,起抛砖引玉之效,望JaguarCts高手能释疑,深表感谢. 一.系统配置部分:1. 运行环境:WIN2000 SERVER版,SP2补丁,P3850CPU,PB8.0Beta+EAS

ps新手教程之学习图层的基础知识-玩转ps的图层操作技巧

  ps新手教程之学习图层的基础知识-玩转ps的图层操作技巧,艺术家使用ps,摄影师使用ps,数码玩家们也使用ps,与此同时,web设计湿更是离不开PS !该软件气势空前鼎盛,无人不知无人不晓.图层面板是自由独立于ps工作空间里面的一个面板.在这个神奇的图层里面,我们可以缩放.更改颜色.设置样式.改变透明度,等等等等.一个图层代表了一个单独的元素,设计师可以任意更改之.图层可以说在网页设计中起着至关重要的作用.他们用来表示网页设计的元素,他们是用来显示文本框.图像.背景.内容和更多其他元素的基底

c语言-关于C语言链表学习入门遇到瓶颈

问题描述 关于C语言链表学习入门遇到瓶颈 怎样学习C语言中的链表,有没有什么好的文章博客,详细易懂,发一下链接,谢谢 解决方案 关于链表的学习,我大一的时候也很困惑.特别是当你看着ADT所谓的(抽象数据类型)时.后来我看了一本有源代码的书,结合代码猜发现也不过如此,很简单的.第一,你必须意识到为什么有数组啦,我还要链表呢?这个问题你想想.然后给你个例子,过年回家啦!火车上的座位明显不够啦!这时候火车尾部就会加一节,不行加两节...总之加到,火车头拉不动为止(当然这是玩笑)而如果是数组的话,你就不

新手上路

问题描述 请问下在这论坛上面怎么下载东西我看了半天都没看到需要积分下载还是什么的 解决方案 解决方案二:有下载频道,去下载频道去下.有的需要积分,有的不需要积分.下载积分.解决方案三:先后找到下面图中的2个按钮:http://hi.csdn.net/attachment/201111/9/139605_1320815592s41G.jpg解决方案四:飘过哈·解决方案五:新手上路危险啊.解决方案六: 解决方案七:我们一样,呵呵,互相鼓励,共同进步解决方案八:新手上路了,大家让开点,被被碰着啦!快闪

Seo变化万千新手需多学习多领悟

seo新手,是seo学习队伍中的一只庞大力量,也是一群不可小看的人.http://www.aliyun.com/zixun/aggregation/7501.html">他们为SEO队伍注入了全新的血液.当然了,很多迷茫的seo者在初学seo技术时,总会遇到这样或者那样的迷惑.作为一个新手中的大哥,有些话要说.下面就让我来简单描述一下吧. 搜索引擎里面的算法,可能存在多达百种的排名因素,而且常常会有较大的变动.时不时的这个因素权重提高,那个因素权重降低了.所以很多的SEO经验在今天看来还是

c语言-新手上路,求教一个C语言问题

问题描述 新手上路,求教一个C语言问题 C语言,输出n个学生成绩,并把输出的成绩从大到小排序,求代码...... 解决方案 这个书上有吧..... 解决方案二: 代码还是要自己写.不要这样 解决方案三: c语言中的一个问题关于C语言的一个问题一个C语言问题---------------------- 解决方案四: 就用if语句就行了,把学生成绩定为数组,然后从第一个开始与下一个比较,如果前面的小于后面的就交换,就是冒泡法排序. 解决方案五: ? //依次输入10个学生的成绩 #include?"

编程学习中要注意效率和感受

早一个多月,收到了一位网友的求助信,请我帮他做一道程序题.这样的求助我是不会直接解答的.如果要想通过读程序来学习,可读的程序太多了,不在乎由我写的这一段程序. 我给他的回信是,他可以自己做出来一个版本,无论对错,我们就他的做法进行讨论.这是我认为有效的交流.提问者没有做,靠着人给讲,这种学习方式,可以休矣.无论对错.好坏,他自己做过了,针对他自己的讨论点就出来了.我当时的答复是: 我的时间有限,将你做过的给我发来,并提出具体问题再讨论为佳.在学习中,这种交流的方式(有一个问题,不说自己的见解,直