green_learner 2022-03-04 22:46 采纳率: 100%
浏览 43
已结题

练习C语言100道单链表的连接时出现842150451

联系代码如下,尝试过直接第一个链表的尾指针直接指向第二个链表的首地址,发现程序出现错误
#include<stdio.h>
#include<malloc.h>
typedef struct number
{
int date;
struct number* next;
}element1;
#define len sizeof(element1)
#define creat_ele1 (element1 )malloc(len)
void connet(element1
p1, element1* p2);
int main()
{
element1* head, * tail, * p;
element1* head1 ,* tail1, * p1;
element1* printf_;//用来输出链表数据
int i, j, k;
printf("输入两个单链表大小");
scanf_s("%d %d", &j, &k);
head = (element1*)malloc(len);
p = head;
while (j)
{
scanf_s("%d", &p->date);
tail = creat_ele1;
p->next = tail;
p = tail;
j--;
}
p = p->next = NULL;
head1 = creat_ele1;
p1 = head1;
while (k)
{
scanf_s("%d", &p1->date);
tail1 = creat_ele1;
p1->next = tail1;
p1 = tail1;
k--;
}
printf_ = head;
p1 = p1->next = NULL;
while (printf_->next!= NULL)
{
printf("%d", printf_->date);
printf_ = printf_->next;
}
printf("\n");
printf_ = head1;
while (printf_->next != NULL)
{
printf("%d", printf_->date);
printf_ = printf_->next;
}
printf("链接后的数据");
connet(head, head1);
printf_ = head;
while(printf_->next)
{
printf("%d", printf_->date);
printf_ = printf_->next;
}
return 0;
}
void connet(element1 * p1,element1 *p2)//链接两个链表
{
while (p1->next)
p1 = p1->next;
p1->next = p2;
}
输入2 2
1 2
1 2
得到结果12 842150451 12

  • 写回答

1条回答 默认 最新

  • orange4reg 2022-03-04 23:40
    关注
    #include<stdio.h>
    #include<malloc.h>
    typedef struct number
    {
        int date;
        struct number* next;
    }element1;
    
    #define len sizeof(element1)
    #define creat_ele1 (element1 *)malloc(len)
    
    void connet(element1 *p1, element1* p2);
    
    int main()
    {
        element1* head, * tail, * p;
        element1* head1, * tail1, * p1;
        element1* printf_;//用来输出链表数据
        int i, j, k;
        printf("输入两个单链表大小");
        scanf_s("%d %d", &j, &k);
        head = (element1*)malloc(len);
        p = head;
        while (true)
        {
            scanf_s("%d", &p->date);
            if (j <= 1) break;
            tail = creat_ele1;
            p->next = tail;
            p = tail;
            j--;
        }
        p = p->next = NULL;
        head1 = creat_ele1;
        p1 = head1;
        while (true)
        {
            scanf_s("%d", &p1->date);
            if (k <= 1) break;
            tail1 = creat_ele1;
            p1->next = tail1;
            p1 = tail1;
            k--;
        }
        printf_ = head;
        p1 = p1->next = NULL;
        while (printf_ != NULL)
        {
            printf("%d", printf_->date);
            printf_ = printf_->next;
        }
        printf("\n");
        printf_ = head1;
        while (printf_ != NULL)
        {
            printf("%d", printf_->date);
            printf_ = printf_->next;
        }
        printf("\n");
        printf("链接后的数据");
        connet(head, head1);
        printf_ = head;
        while (printf_ != NULL)
        {
            printf("%d", printf_->date);
            printf_ = printf_->next;
        }
        return 0;
    }
    void connet(element1* p1, element1* p2)//链接两个链表
    {
        while (p1->next)
            p1 = p1->next;
        p1->next = p2;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月13日
  • 已采纳回答 3月5日
  • 创建了问题 3月4日

悬赏问题

  • ¥15 matlab基于鲸鱼算法优化vmd
  • ¥20 PCB设计与制作问答
  • ¥20 课堂跑如何下载ppt
  • ¥15 有没有哥看着画下电路
  • ¥15 STM32阿里云平台显示不了传感器采集的数据
  • ¥20 三菱FX系列PLC上位机串口下指令置位M64和M65,这两条指令分别是什么呢?
  • ¥15 有关结冰模拟程序咨询
  • ¥15 ubuntu服务器配置dns域名后无法访问其他域名
  • ¥50 本人复制了一个关于股票指标的代码,但是运行失败,有没有人帮我解决一下
  • ¥50 用matlab和numeca做透平机械流体力学和热力学模拟 价格可议