| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 602 人关注过本帖
标题:为什么链表不能输出????
只看楼主 加入收藏
hy247767221
Rank: 2
来 自:襄樊
等 级:论坛游民
帖 子:41
专家分:22
注 册:2011-7-27
结帖率:87.5%
收藏
已结贴  问题点数:5 回复次数:7 
为什么链表不能输出????
#include<stdio.h>
#include<stdlib.h>

typedef struct Node
{
    int data;
    struct Node *next;
}Node, *LNode;

LNode In_link(LNode head);
void Display_link(LNode head);
void Free_link(LNode head);

int main()
{
    LNode head = NULL, top = NULL;

    head = In_link(head);
    Display_link(head);
    putchar(10);

    top = In_link(top);
    Display_link(top);
    putchar(10);

    Free_link(head);
    Free_link(top);

    return 0;
}

LNode In_link(LNode head)
{
    int num;
    Node *link = NULL, *incept_link = NULL;

    printf("Please input the number:");
    scanf("%d", &num);
    while(num)
    {
        link = (Node *)malloc(sizeof(Node));
        link->data = num;
        if(head == NULL)
            head = link;
        else
            incept_link->next = link;
        incept_link = link;
        scanf("&d", &num);
    }
    if(incept_link != NULL)
        incept_link->next = NULL;
 
    return head;
}

void Display_link(LNode head)
{
    Node *incept_link = NULL;

    if(head == NULL)
    {
        printf("The link is empty!\n");
        return;
    }

    incept_link = head;
    while(incept_link)
    {
        printf("%3d", incept_link->data);
        incept_link = incept_link->next;
    }
}

void Free_link(LNode head)
{
    if(head == NULL)
    {
        printf("The link is empty!\n");
        return;
    }

    if(head->next)
        Free_link(head->next);
    Free_link(head);
}
搜索更多相关主题的帖子: include return 
2011-09-18 19:51
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:1 
你自己找,自己调试,看到哪停了、、

离恨恰如春草,更行更远还生。
2011-09-18 21:33
nicum
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:180
专家分:712
注 册:2011-2-1
收藏
得分:1 
void Free_link(LNode head)                   //假设head!=NULL,head->next=NULL
{
    if(head == NULL)                        //false
    {
        printf("The link is empty!\n");
        return;
    }

    if(head->next)                           //false
        Free_link(head->next);
    Free_link(head);                        //无穷递归
}
2011-09-19 09:10
nicum
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:180
专家分:712
注 册:2011-2-1
收藏
得分:3 
void Free_link(LNode head)
{
    LNode *p=head;
    if(!p)
        return;
    head=head->next;
    delete p;
    Free_link(head);
}
2011-09-19 09:16
hy247767221
Rank: 2
来 自:襄樊
等 级:论坛游民
帖 子:41
专家分:22
注 册:2011-7-27
收藏
得分:0 
回复 3楼 nicum
不会啊,这不是无穷递归啊,以前有试过的··
2011-09-19 14:49
hy247767221
Rank: 2
来 自:襄樊
等 级:论坛游民
帖 子:41
专家分:22
注 册:2011-7-27
收藏
得分:0 
回复 5楼 hy247767221
楼上的哥们,表示抱歉,我犯了低级错误,格式控制符打错了
 scanf("&d", &num);
请原谅啦
其他的没有错误!!!
2011-09-19 15:53
nicum
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:180
专家分:712
注 册:2011-2-1
收藏
得分:0 
回复 6楼 hy247767221
你看一下 当 head!=NULL  head->next=NULL 的时候 他 是不是 无穷递归
虽然 大多数 情况下 貌似没错。 但 用上面条件时 就错了。
2011-09-19 17:40
hy247767221
Rank: 2
来 自:襄樊
等 级:论坛游民
帖 子:41
专家分:22
注 册:2011-7-27
收藏
得分:0 
回复 7楼 nicum
恩,对了,应该是这样的
void Free_link(LNode head)
{
    if(head == NULL)
    {
        printf("The link is empty!\n");
        return;
    }

    if(head->next)
        Free_link(head->next);
    free(head);
}
谢谢你啦,是我疏忽了,以后多交流!!!
2011-09-19 19:43
快速回复:为什么链表不能输出????
数据加载中...
 
   



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

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