简单的链表程序,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));
[解决办法]
#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函数中,是局部定义,其他函数里面使用就会出现未定义错误.
[解决办法]