| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 656 人关注过本帖
标题:链表程序错误求解
只看楼主 加入收藏
天空的记忆
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-2-28
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
链表程序错误求解
下面在指定位置插入元素的链表程序,VS提示错误,请问什么原因?大神求指导


#include<stdio.h>
#include<stdlib.h>

struct list
{
    int data;
    struct list *next;
};

struct list *create_list()     //建立一个节点
{
    return (struct list  *)calloc(1,sizeof(struct list));
};

void traverse(struct list *ls)//循环遍历链表
{
    struct list *p = ls;
    while(p)
    {
        printf("%d\n",p->data);
    p = p->next;
    }
};

struct list *insert_list(struct list *ls, int n, int data)//在指定位置插入元素
{
    struct list *p = ls;
    while(p && n--)
    {
        p->next;
    }

    if(p == NULL)
    {
        return NULL;
    }

    struct list *node = create_list();
    node->data = data;
    node->next = p->next;
    p->next = node;
    return node;
};

int main()
{
    struct list *first = create_list();  //堆中创建一个节点
    struct list *second = create_list();
    struct list *third = create_list();
    first->next = second;
    second->next = third;
    third->next = NULL;
    first->data = 1;
    second->data = 2;
    third->data = 3;

    insert_list(first,1,30);

    traverse(first);
   

    return 0;
}


结果:
1>  main.c
1>c:\users\zhang\desktop\项目\链表\链表\main.c(38): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
1>c:\users\zhang\desktop\项目\链表\链表\main.c(39): error C2065: “node”: 未声明的标识符
1>c:\users\zhang\desktop\项目\链表\链表\main.c(39): error C2223: “->data”的左侧必须指向结构/联合
1>c:\users\zhang\desktop\项目\链表\链表\main.c(40): error C2065: “node”: 未声明的标识符
1>c:\users\zhang\desktop\项目\链表\链表\main.c(40): error C2223: “->next”的左侧必须指向结构/联合
1>c:\users\zhang\desktop\项目\链表\链表\main.c(41): error C2065: “node”: 未声明的标识符
1>c:\users\zhang\desktop\项目\链表\链表\main.c(41): warning C4047: “=”:“list *”与“int”的间接级别不同
1>c:\users\zhang\desktop\项目\链表\链表\main.c(42): error C2065: “node”: 未声明的标识符
1>c:\users\zhang\desktop\项目\链表\链表\main.c(42): warning C4047: “return”:“list *”与“int”的间接级别不同


搜索更多相关主题的帖子: include 链表程序 return 元素 
2017-02-28 15:43
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
你使用了老旧的C编译器,那些古老的C编译器在{}中强制要求变量定义在执行语句之前,现在的C标准是反对这么做的。

BTW:
struct list *create_list()     //建立一个节点
{
    return (struct list  *)calloc(1,sizeof(struct list));
}; 函数后面不要加分号
2017-02-28 15:53
快速回复:链表程序错误求解
数据加载中...
 
   



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

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