| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 830 人关注过本帖
标题:请帮忙看一下有什么问题
只看楼主 加入收藏
zheng031024
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-7-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
请帮忙看一下有什么问题
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct node
{
    int data;
    struct node *pnext;
}NODE, *PNODE;
 

PNODE create_list (void);
void traverse_list (PNODE phead);

int main (void)

{
    PNODE phead = NULL;
    phead = create_list();
    traverse_list (phead);
    return 0;
}


PNODE create_list (void)
{
    int i;
    int len;
    int val;
    PNODE phead = (PNODE) malloc (sizeof(NODE));
    if (phead == NULL)
    {
           printf ("分配内存失败\n");
            exit (-1);
    }
    PNODE ptail = phead;
    ptail->pnext = NULL;
    printf ("请输入节点的个数 len = ");
    scanf ("%d", &len);
    for (i = 0; i < len; ++i)
    {
        printf ("请输入%d个节点值 val = ", i+1);
        scanf ("%d   ", &val);
        PNODE pnew = (PNODE) malloc (sizeof(NODE));
        if (pnew == NULL)
        {
            printf ("分配内存失败\n");
            exit (-1);
        }
        pnew->data = val;
        ptail->pnext = pnew;
        pnew->pnext = NULL;
        ptail = pnew;

    }

  return phead;



}

void traverse_list (PNODE phead)
{
  PNODE p = phead->pnext;
  while (p != NULL)
  {
      printf ("%d   ", p->data);
      p = p->pnext;
  }
  return;
}
下面是编译报错
--------------------Configuration: 31 - Win32 Debug--------------------
Compiling...
31.c
D:\c1\31.c(35) : error C2275: 'PNODE' : illegal use of this type as an expression
        D:\c1\31.c(8) : see declaration of 'PNODE'
D:\c1\31.c(35) : error C2146: syntax error : missing ';' before identifier 'ptail'
D:\c1\31.c(35) : error C2065: 'ptail' : undeclared identifier
D:\c1\31.c(35) : warning C4047: '=' : 'int ' differs in levels of indirection from 'struct node *'
D:\c1\31.c(36) : error C2223: left of '->pnext' must point to struct/union
D:\c1\31.c(43) : error C2275: 'PNODE' : illegal use of this type as an expression
        D:\c1\31.c(8) : see declaration of 'PNODE'
D:\c1\31.c(43) : error C2146: syntax error : missing ';' before identifier 'pnew'
D:\c1\31.c(43) : error C2065: 'pnew' : undeclared identifier
D:\c1\31.c(43) : warning C4047: '=' : 'int ' differs in levels of indirection from 'struct node *'
D:\c1\31.c(44) : warning C4047: '==' : 'int ' differs in levels of indirection from 'void *'
D:\c1\31.c(49) : error C2223: left of '->data' must point to struct/union
D:\c1\31.c(50) : error C2223: left of '->pnext' must point to struct/union
D:\c1\31.c(51) : error C2223: left of '->pnext' must point to struct/union
Error executing cl.exe.

31.exe - 10 error(s), 3 warning(s)
搜索更多相关主题的帖子: void 内存 include return 有心人 
2012-07-04 21:56
zheng031024
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-7-4
收藏
得分:0 
请高人给看一下吧!急啊
2012-07-04 23:13
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:5 
变量定义都放在函数头就可以了

程序代码:
PNODE create_list (void)
{
    int i;
    int len;
    int val;
    PNODE phead = (PNODE) malloc (sizeof(NODE));
    PNODE ptail=phead;
    PNODE pnew;
    ptail->pnext = NULL;
    /*……………………………………*/
}

2012-07-05 00:12
zheng031024
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-7-4
收藏
得分:0 
以下是引用随风飘荡在2012-7-5 00:12:39的发言:

变量定义都放在函数头就可以了

PNODE create_list (void)
{
    int i;
    int len;
    int val;
    PNODE phead = (PNODE) malloc (sizeof(NODE));
    PNODE ptail=phead;
    PNODE pnew;
    ptail->pnext = NULL;
    /*……………………………………*/
}
谢谢! 真的可以
但这是为什么呢??????????
2012-07-05 04:49
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
收藏
得分:5 
c语言变量是先声明后使用,必须在最前面声明。
c++才可以在使用的时候才声明。
其实 还和你的编译器有关

喜欢睡觉 却经常熬夜
2012-07-05 15:12
星112
Rank: 5Rank: 5
来 自:山西朔州
等 级:职业侠客
威 望:2
帖 子:94
专家分:342
注 册:2012-6-22
收藏
得分:5 
确实如楼上所说C语言需要先申明后引用的,但是我用的VC6++就没有问题,说明还是和编译器有一定的关系的
2012-07-05 15:29
ly2222
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:217
专家分:618
注 册:2012-6-15
收藏
得分:5 
学习了!
2012-07-05 17:15
张丹
Rank: 2
等 级:论坛游民
帖 子:94
专家分:66
注 册:2010-6-7
收藏
得分:0 
学习了
2012-12-28 09:42
请教c语言
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-8-17
收藏
得分:0 
回复 楼主 zheng031024
我程序和你写的一样 但是结果就是不同 输入三个链表  但只输出最后一个 另外外两个没有输出  ?、、、你是那样的吗??
2013-08-17 21:07
快速回复:请帮忙看一下有什么问题
数据加载中...
 
   



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

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