标题:创建链表的一个简单问题
只看楼主
msl12
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2015-2-6
结帖率:25%
 问题点数:0 回复次数:3 
创建链表的一个简单问题
代码如下:
----------------------------------------------------------------------------
# include <stdio.h>
# include <stdlib.h>

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

void add(node * head)
{
    printf("Now add some data to linked list\n0 for null\n");

    char oData=0;
    node * p1=NULL, *p2=NULL;
    while(scanf("%c%*c", &oData))
    {
        if (oData=='0')
            break;

        p1=(node *)malloc(sizeof(node));
        p1->data=oData;
        p1->next=NULL;

        if (head==NULL)
        {
            head=p1;
            p2=head;    //¾í2»ÄüD′Ôúò»DD£¿
        }
        else
        {
            p2->next=p1;
            p2=p1;
        }

        printf("0 for null\n");
    }
}

void printAll(node * head)
{
    node *p1=head;

    while (p1!=NULL)
    {
        printf("%c ", p1->data);
        p1=p1->next;
    }

    printf("\n");
}

void main()
{
    node * head=NULL;
    add(head);    //add函数执行完后head仍未空指针这是为何?而如果add改为有返回值node*,然后写成这个形式 head=add(head),此时head却不为空这是为何?
    printAll(head);
}
搜索更多相关主题的帖子: include linked null 
2015-10-23 21:29
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
void foo( int a )
{
    a = 2;
}

int main( void )
{
    int a = 1;
    foo( a );
    此时你觉得a等于几?同理!
2015-10-23 23:35
lzl123321
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:41
专家分:148
注 册:2015-10-15
得分:0 
以下是引用rjsp在2015-10-23 23:35:22的发言:

void foo( int a )
{
    a = 2;
}

int main( void )
{
    int a = 1;
    foo( a );
    此时你觉得a等于几?同理!

这个应该等于1吧
2015-10-24 02:02
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 3楼 lzl123321
同理,他的head也不会变
2015-10-24 13:22



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




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

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