| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1154 人关注过本帖
标题:求大神帮我看一下这个错哪儿了[em28]
只看楼主 加入收藏
名字太长
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-3-30
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:10 
求大神帮我看一下这个错哪儿了[em28]
#include<stdio.h>
#include<stdlib.h>
typedef int DataType;
typedef struct Node{
    DataType data;
    struct Node *next;
}LinkNode,*LinkList;
void outputLink(LinkList L);
main()
{
    LinkList L;
    LinkNode *s;
    int i;
    L=NULL;
    L=(LinkList)malloc(sizeof(LinkNode));
    for(i=1;i<=4;i++)
    {
        s=(LinkNode*)malloc(sizeof(LinkNode));
        printf("请输入第%d个元素:",i);
        scanf("%d",&s->next);
        s->next=L->next;
        L->next=s;
    }
    outputLink(LinkList L);
    return L;
}

void outputLink(LinkList L)
{
    LinkNode *p;
    if(L->next=NULL)
    {
    printf("该链表为空\n");
        
    }
    p=L->next;
    while(p!=NULL)
        printf("%d",p->next);
        p=p->next;
}
搜索更多相关主题的帖子: include 元素 
2016-03-30 09:07
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:10 
函数传参不需要带修饰
outputLink(L);就可以了。
另外你的
scanf("%d",&s->next);

 printf("%d",p->next);
都是对指针进行操作,确认是你要的结果吗?
2016-03-30 09:16
名字太长
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-3-30
收藏
得分:0 
就是想把这个单链表输出来
2016-03-30 09:31
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
要输入或输出内容,应该是p->data才对吧?
2016-03-30 09:37
名字太长
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-3-30
收藏
得分:0 
改了还是报错,错在    if(L->next=NULL)和    p=L->next;
2016-03-30 09:41
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
if里面应该用==

#include<stdio.h>
#include<stdlib.h>
typedef int DataType;
typedef struct Node {
    DataType data;
    struct Node *next;
}LinkNode, *LinkList;
void outputLink(LinkList L);
main()
{
    LinkList L;
    LinkNode *s;
    int i;
    L = NULL;
    L = (LinkList)malloc(sizeof(LinkNode));
    memset(L, 0, sizeof(LinkNode));
    for (i = 1; i <= 4; i++)
    {
        s = (LinkNode*)malloc(sizeof(LinkNode));
        printf("请输入第%d个元素:", i);
        scanf("%d", &s->data);
        s->next = L->next;
        L->next = s;
    }
    outputLink(L);
    return L;
}

void outputLink(LinkList L)
{
    LinkNode *p;
    if (L->next == NULL)
    {
        printf("该链表为空\n");

    }
    p = L->next;
    while (p != NULL)
    {
        printf("%d ", p->data);
        p = p->next;
    }
}
2016-03-30 09:59
名字太长
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-3-30
收藏
得分:0 
可以了,谢谢啊。我想问一下这个是什么函数  memset(L, 0, sizeof(LinkNode));
2016-03-30 10:08
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
这是把L里的参数全部置0,初始化的意思
2016-03-30 10:10
名字太长
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-3-30
收藏
得分:0 
谢谢
2016-03-30 10:12
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:10 
错的地方较多,大致按你的需求改了下,有详细注释。
#include<stdio.h>
#include<stdlib.h>
typedef int DataType;
typedef struct Node{
    DataType data;
    struct Node *next;
}LinkNode,*LinkList;
void outputLink(LinkList L);
int main()
{
    LinkList L,p,s;   //你已经有结构体的指针别名,就不需要在做LinkNode *s定义
    int i;
    L=NULL;
    for(i=1;i<=4;i++)
    {
        s=(LinkNode*)malloc(sizeof(LinkNode));
        if(L==NULL)L=p=s;  //置头指针;
        else p->next =s;   //已经设置头指针则让上一节点链接当前节点,让链子链接起来
        s->next =NULL;     //初始化节点指向NULL,这很重要,以后的
        printf("请输入第%d个元素:",i);
        scanf("%d",&s->data);  //你原语句怎么能够把输入的数据给节点?节点是专用链接其他数据节点的,是特有值
        p=s;               //保存当前节点地址到p,让当前节点成为上一个节点
    }
    outputLink(L);
    while(L!=NULL)
    {//堆内存使用后要释放,养成这个习惯
        p=L;
        L=L->next;
        free(p);
    }
    return 0;     //你原代码是return L,main函数返回指针很多编译器会报错
}

void outputLink(LinkList L)
{
    while(L!=NULL)
    {
        printf("%d,",L->data );
        L=L->next;
    }
    printf("\n");
}

能编个毛线衣吗?
2016-03-30 10:14
快速回复:求大神帮我看一下这个错哪儿了[em28]
数据加载中...
 
   



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

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