标题:链表里这个函数怎么了?
只看楼主
选调生
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:100
注 册:2016-6-24
结帖率:66.67%
已结贴  问题点数:10 回复次数:3 
链表里这个函数怎么了?
主要是为什么不能输出这个链表?

程序代码:
#include<stdio.h>  
#include<stdlib.h>  
  
typedef struct node  
{  
    int data;  
    struct node *next;  
}Linklist; 

Linklist *CreateList_Head(Linklist *L,int n)   
{
    int i;
    Linklist *p;
    L = (Linklist *)malloc(sizeof(Linklist));
    L->next = NULL;
    for(i=n;i>0;--i)
    {
        p = (Linklist *) malloc (sizeof(Linklist));
        scanf("%d",&p->data);
        p->next=L->next;
        L->next=p;
    }
    return L;
}

void Output(Linklist *L)
{
    Linklist *p;
    p=L->next;    //p指向第一个结点,为什么不是“p=L;”因为头结点无数据 
    if(p==NULL)  
        printf("linklist is empty...\n");   
    while(p!=NULL)
    {
        printf("%5d",p->data);
        p=p->next;
    } 
    printf("\n");
}
  
void main()
{
    int m;
    Linklist *L;
    printf("please input m:\n");
    scanf("%d",&m);
    printf("head_insert is :\n");
    CreateList_Head(L,m);
    printf("output the list:\n");
    Output(L);
} 
搜索更多相关主题的帖子: int data next Output printf 
2018-01-25 17:46
白衣柳相
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:142
专家分:168
注 册:2016-12-23
得分:5 
首先,你的输出即使可以输出也是倒着的对比你输入,因为你采用的是头插法,然后至于你输出为什么是错的呢,因为在创建链表那个函数创建完里头指针已经指向末尾,然后就到输出函数里了,所以你只需要在创建函数加个返回值,然后把返回值用输出函数输出就可以了,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,我知道为什么人类们不来回答这个问题了

什么最重要,学习!!!! 我要你们无话可说!我想要的东西自己去拿
2018-01-25 18:47
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:5 
#include<stdio.h>
#include<stdlib.h>

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

Linklist *CreateList_Head(int n)
{
    int i;
    Linklist *L=NULL, *p;
    for(i=n;i>0;--i)
    {
        p = (Linklist *) malloc (sizeof(Linklist));
        scanf("%d",&p->data);
        p->next = L;
        L = p; //头插
    }
    return L;
}

void Output(Linklist *L)
{
    if(L==NULL)
    {
        printf("linklist is empty...\n");
        return;
    }
    for (; L; L=L->next)
        printf("%5d",L->data);
    printf("\n");
}

void main()
{
    int m;
    printf("please input m:\n");
    scanf("%d",&m);
    printf("head_insert is :\n");
    Linklist *L = CreateList_Head(m);
    printf("output the list:\n");
    Output(L);
}
2018-01-25 21:34
选调生
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:100
注 册:2016-6-24
得分:0 
谢谢各位啦
2018-01-26 14:42



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




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

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