标题:帮看一下这个(两个链表合并)代码的问题,谢谢大家了
只看楼主
LG隐
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:67
专家分:198
注 册:2016-4-20
结帖率:0
 问题点数:0 回复次数:3 
帮看一下这个(两个链表合并)代码的问题,谢谢大家了
// 7.12.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include"stdio.h"
#include"stdlib.h"

struct node{
    int data;
    struct node *next;
};


int _tmain(int argc, _TCHAR* argv[])
{
    int n, x,n1;
    bool flag = true;
    struct  node *p = NULL, *p2 = NULL, *p1 = NULL, *head = NULL, *head1 = NULL, *p3 = NULL,*p4=NULL,*p5=NULL;
    printf("请输入第一个链表 输入0结束\n");
    scanf_s("%d", &n);
    while (n != 0)
    {
        p = (struct node *)malloc(10);
        p->data = n;
        if (head == NULL)head = p;
        else  p2->next = p;
        p2 = p;
        scanf_s("%d", &n);
    }
    printf("请输入第二个链表 输入0结束\n");
    scanf_s("%d", &n1);
    while (n1 != 0)
    {
        p1 = (struct node *)malloc(10);
        p1->data = n1;
        if (head1 == NULL)head1 = p1;
        else  p3->next = p1;
        p3= p1;
        scanf_s("%d", &n1);
    }
    p5 = head;
    while (p5->next != NULL)  //找尾结点
    {
        p5 = p5->next;
    }
    p5->next = head1;  //让第一个链表的尾结点指向第二个的头结点,我觉得是这里出问题
    p4= head;
    while (p4->next != NULL) //完全没有进入循环。。。。
    {
        printf("sfdasdf");
        printf("%d", p4->data);
        p4 = p4->next;
    }

}

搜索更多相关主题的帖子: 链表 struct next NULL head 
2017-11-13 23:36
LG隐
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:67
专家分:198
注 册:2016-4-20
得分:0 
回复 2楼 炎天
大神,没有啊,就是输出了有限个c啊,个数就是我输入的链表的结点的个数。
2017-11-14 22:56
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:0 
抱歉,
原2楼讲得不对已删除之!
不知道你自己弄明白了没有, OK,要有头有尾
创建好一个节点,要立马设置节点的next
while (p5->next != NULL)  //找尾结点,你有想过你第一个链表的最后一个节点的next指向哪里么?
{               //前面的节点没问题的,第一个节点的next指向第二节点,第二节点的next指向第三个节点 ... ...
        p5 = p5->next;    //最后一个节点的next只向谁呢?
}


#include "stdafx.h"
#include"stdio.h"
#include"stdlib.h"

struct node {
    int data;
    struct node *next;
};


int _tmain(int argc, _TCHAR* argv[])
{
    int n, x, n1;
    bool flag = true;
    struct  node *p = NULL, *p2 = NULL, *p1 = NULL, *head = NULL, *head1 = NULL, *p3 = NULL, *p4 = NULL, *p5 = NULL;
    printf("请输入第一个链表 输入0结束\n");
    scanf_s("%d", &n);
    while (n != 0)
    {
        p = (struct node *)malloc(10);
        p->data = n;
        if (head == NULL)head = p;
        else  p2->next = p;
        p2 = p;
        scanf_s("%d", &n);
    }
    p->next = NULL;        // 最后一个节点的next设置为NULL
    printf("请输入第二个链表 输入0结束\n");
    scanf_s("%d", &n1);
    while (n1 != 0)
    {
        p1 = (struct node *)malloc(10);
        p1->data = n1;
        if (head1 == NULL)head1 = p1;
        else  p3->next = p1;
        p3 = p1;
        scanf_s("%d", &n1);
    }
    p1->next = NULL;     //最后一个节点的next设置为NULL
    p5 = head;
    while (p5->next != NULL)  //找尾结点
    {
        p5 = p5->next;
    }
    p5->next = head1;  //让第一个链表的尾结点指向第二个的头结点,我觉得是这里出问题
    p4 = head;
    while (p4->next != NULL) //完全没有进入循环。。。。
    {
        //printf("sfdasdf");
        printf("%d\N", p4->data);
        p4 = p4->next;
    }
    //上面的while(...)循环无法输出最后一个节点,故此
    printf("%d", p4->data);
}

[此贴子已经被作者于2017-11-15 01:08编辑过]


早知做人那么辛苦!  当初不应该下凡
2017-11-15 01:05
LG隐
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:67
专家分:198
注 册:2016-4-20
得分:0 
回复 3楼 炎天
哈哈,谢谢大神了。我还是不够细心。
2017-11-15 22:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-482461-1-1.html




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

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