首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

简单的链表程序,GCC编译不通过,出现异常:list.c:38: error: expected ‘)’ before ‘list’

2012-02-28 
简单的链表程序,GCC编译不通过,出现错误:list.c:38: error: expected ‘)’ before ‘list’#include stdio.h

简单的链表程序,GCC编译不通过,出现错误:list.c:38: error: expected ‘)’ before ‘list’
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
  int i;
int a;
typedef struct node
{
int data;
  struct node *next;
}link_node;
typedef link_node* link_list;

int init_link(link_list *list);
int link_insert(link_list list,int i,int val);
int get_data(link_list list,int i,int *data);

  link_list int_list;
  init_link(&int_list);
  for(i = 0;i <= 9;i++)
  link_insert(int_list,i,i);
  get_data(int_list,5,&a);
  printf("the data is:%d\n",a);
  return 0;
}
   
int init_link(link_list *list)
{
*list = (link_list)malloc(sizeof(link_node));
if(!list)
return -1;
memset(&((*list)->data),0,sizeof(data));
(*list)->next = NULL;
return 0;
}

int link_insert(link_list list,int i,int val)
{
link_list new_node;
link_list p = list;
int j = 0;
while((j++ < i) && (p = p->next));
if(!p || (j <= i))
return 0;
new_node =(list)malloc(sizeof(link_node));
new_node->data = val;

new_node->next = p->next;
p->next = new_node;
return 1;
}

int get_data(link_list list,int i,int *data)
{
link_list p = NULL;
int j = 0;
p = list->next;
while((j++ < i) && (p = p->next));
if(!p || j <= i)
{
printf("the node doesn't exist");
return 0;
}
*data = p->data;
return 0;
}
分配内存时*list = (link_list)malloc(sizeof(link_node));出现:
list.c:28: error: expected ‘)’ before ‘*’ token
插入数据的函数原型int link_insert(link_list list,int i,int val)出现:
list.c:38: error: expected ‘)’ before ‘list’
查询数据函数int get_data(link_list list,int i,int *data)出现如下错误:
list.c:54: error: expected ‘)’ before ‘list’
求解?问题出在哪里呢,我找了很久都没找出问题。求高手帮助!


[解决办法]
list = (link_list*)malloc(sizeof(link_node));
[解决办法]

C/C++ code
#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct node{    int data;    struct node *next;}link_node;typedef link_node* link_list;int init_link(link_list *list);int link_insert(link_list list,int i,int val);int get_data(link_list list,int i,int *data);int main(){    int i;    int a;    link_list int_list;    init_link(&int_list);    for(i = 0;i <= 9;i++)        link_insert(int_list,i,i);    get_data(int_list,5,&a);    printf("the data is:%d\n",a);    return 0;}int init_link(link_list *list){    list = (link_list*)malloc(sizeof(link_node));    if(!list)        return -1;    memset(&((*list)->data),0,sizeof(int));    (*list)->next = NULL;    return 0;    }int link_insert(link_list list,int i,int val){    link_list new_node;    link_list p = list;    int j = 0;    while((j++ < i) && (p = p->next));    if(!p || (j <= i))        return 0;    new_node =(link_list)malloc(sizeof(link_node));    new_node->data = val;    new_node->next = p->next;    p->next = new_node;    return 1;}int get_data(link_list list,int i,int *data){    link_list p = NULL;    int j = 0;    p = list->next;    while((j++ < i) && (p = p->next));    if(!p || j <= i)    {        printf("the node doesn't exist");        return 0;    }    *data = p->data;    return 0;}
[解决办法]
28行我编译没有出错


其余都是
link_list写成了list.
还有个data没有定义错误.
link_list,list_node都定义在main函数中,是局部定义,其他函数里面使用就会出现未定义错误.
[解决办法]

探讨

list = (link_list*)malloc(sizeof(link_node));

[解决办法]
link_list*

热点排行