标题:刚学到链表始终有个问题,请各位能指教一下吗?
只看楼主
dzy123
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:379
专家分:820
注 册:2013-4-18
结帖率:82%
已结贴  问题点数:20 回复次数:1 
刚学到链表始终有个问题,请各位能指教一下吗?
程序代码:
#include<stdio.h>
#include<stdlib.h>
struct node {
    int data;
    struct node *next;
};
void crea(int);
int main(void) {
    int x;
    scanf("%d",&x);
    crea(x);
    system("pause");
    return 0;
}
void crea( int n) {
    struct node *p,*head;
    head=(struct node *)malloc(sizeof(struct node));//创建头结点。
    p=(struct node *)malloc(sizeof(struct node));//创建第一个结点。
    head->next=p;//将头结点指向第一个结点。
    for(int i=0; i<n; i++) {
        scanf("%d",&p->data);//输入结点中的数据.
        p->next=(struct node *)malloc(sizeof(struct node));//创建下一个结点.
        p=p->next;//将这个结点指向下一结点.
        p->next=0;//这句怎么改,始终多指向了一个地,我以为它是指向尾结点,实际上不是. 
    }
    p=head->next;//指向首结点.
    while(p) {
        printf("%d ",p->data);
        p=p->next;

    }
}

在输出链表时始终多指向了一个地址,如何修改呢.

[此贴子已经被作者于2018-5-3 08:41编辑过]

搜索更多相关主题的帖子: struct node int next 结点 
2018-05-03 08:39
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
void crea( int n)
{
    struct node *p,*head;
    head=(struct node *)malloc(sizeof(struct node));//创建头结点。
    p = head;
    scanf("%d",&p->data);//输入结点中的数据.
    int i;
    for(i=1; i<n; i++)
    {
        p->next=(struct node *)malloc(sizeof(struct node));//创建下一个结点.
        p=p->next;//将这个结点指向下一结点.
        scanf("%d",&p->data);//输入结点中的数据.
    }
    p->next = NULL;
    for(p=head; p; p=p->next)
        printf("%d ",p->data);
}
2018-05-03 10:22



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




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

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