VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 588|回复: 1

链表的问题,求救~~急~~

[复制链接]

7

主题

15

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-1-3 18:40:01 | 显示全部楼层 |阅读模式
创建两个链表(A,B),然后将其连接并由低到高排序
在VC++6。0下调试的,运行到LINK函数就跳出了,F11观察似乎两次函数返回的HEAD都指向不对,但是不知道错那里~
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define NAMELEN 10
#define LEN sizeof(struct data)
typedef  
struct data
{
        long num;
        char name[NAMELEN];
        struct data *next;
};
struct data *Crt(void)
{
        int count=1;
        struct data *head,*fwd;
        head=fwd=(struct data*)malloc(LEN);
        head->num=-1;
        do
        {
                fwd=head->next=(struct data*)malloc(LEN);
                printf("Stu %-4d\n",count++);
                printf("Num  => ");
                scanf("%ld",&fwd->num);
                printf("Name =>");
                scanf("%s",&fwd->name);
        }
        while(fwd->num);               
        return(head);
}
void link(struct data *A_head,struct data *B_head)
{
        struct data *fwd=A_head;
        fwd=fwd->next;
        while(fwd->next)
                fwd=fwd->next;
        fwd->next=B_head;
}
void ord(struct data *head)
{
        struct data *fwd,*flw,*ord;
        ord=fwd=flw=head;
        fwd=fwd->next;
        while(ord->next)
        {
                if (fwd->num<ord->num)
                {
                        flw->next=fwd->next;
                        fwd->next=ord->next;
                        ord=ord->next=fwd;
                }
                flw=fwd;
                fwd=fwd->next;
        }
}
void print(struct data *fwd)
{
        int count=1;
        fwd=fwd->next;
        while(fwd)
        {
                printf("Stu %-4d\n",count++);
                printf("Num  %-4d\n",fwd->num);
                printf("NAME %s\n",fwd->name);
                fwd=fwd->next;
        }
}
void main()
{
        void link(struct data *A_head,struct data *B_head);
    void ord(struct data *head);
    void print(struct data *fwd);
        struct data *A_head,*B_head;
        printf("Input infomations of Group A students\n");
        A_head=Crt();
        printf("Input infomations of Group B students\n");
        B_head=Crt();
        printf("Now link Group A and Group B\n");
        link(A_head,B_head);
        printf("Finally,order the new Group\n");
        ord(A_head);
        printf("Now check the result\n");
        print(A_head);
}
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-10 20:00:01 | 显示全部楼层
head=fwd=(struct data*)malloc(LEN);
head->num=-1;
"head->num=-1"有问题,head->num是一个随机值.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表