user-0 提问: C语言链表问题无情的报错了

回复:
user: user-0
content: void listinsert(list *lst, int j, int n) { 	int i; 	onewaylist *p; 	onewaylist ** position = &lst->first; 	p = (onewaylist*)malloc(sizeof(onewaylist)); 	p->data = n; 	for(i = 0; i < j; i++) 		position = &(*position)->next; 	p->next = *position; 	*position = p; 	++lst->size; }

user: user-0
content: 引用 1 楼 user-3 的回复: //定义改成吧 typedef struct _list_tags { int n; struct _list_tags* next; }list;  看看这个再写，用理论去实践 http://blog.csdn.net/feixiaoxing/article/details/6849457 多亏你推荐的博文，我才能像出类似的链表插入函数

user: user-0
content: 引用 6 楼 gsw945 的回复:楼主的代码编译不通过，d = lst.next->next;这一句有问题，我把程序修改了一下(基本上只是加了一个 list)，如下： #include <stdio.h>  typedef struct list {     int n;     struct list *next; } list;  int main() {     list lst, a, b, c, *d;     lst.next = &a;     a.next = &b;     b.next = &c;     d = lst.next->next;     return 0; }  以上代码codeblocks编译通过 请在定义结构体时加上list，否则IDE会误解 struct list *next;这一句 辛苦啦

user: user-1
content: 楼主的代码编译不通过，d = lst.next->next;这一句有问题，我把程序修改了一下(基本上只是加了一个 list)，如下： #include <stdio.h>  typedef struct list {     int n;     struct list *next; } list;  int main() {     list lst, a, b, c, *d;     lst.next = &a;     a.next = &b;     b.next = &c;     d = lst.next->next;     return 0; }  以上代码codeblocks编译通过 请在定义结构体时加上list，否则IDE会误解 struct list *next;这一句

user: user-0
content: 引用 2 楼 turingo 的回复:结构体定义的时候少写了一个list，导致struct list不能识别，应该这样：  typedef struct list { int n; struct list* next; }list;   [quote=引用 楼主 Benjaminzhou93 的回复:] typedef struct { 	int n; 	struct list* next; }list;  void main() { 	list lst, a, b, c, *d; 	lst.next = &a; 	a.next = &b; 	b.next = &c; 	d = lst.next->next;//13行 }   E:\Windows工作区\test3.c(10) : warning C4133: '=' : incompatible types - from 'struct list *' to 'struct list *' E:\Windows工作区\test3.c(11) : warning C4133: '=' : incompatible types - from 'struct list *' to 'struct list *' E:\Windows工作区\test3.c(12) : warning C4133: '=' : incompatible types - from 'struct list *' to 'struct list *' E:\Windows工作区\test3.c(13) : error C2037: left of 'next' specifies undefined struct/union 'list' 执行 cl.exe 时出错.[/quote]

user: user-0
content: 引用 3 楼 Benjaminzhou93 的回复:[quote=引用 1 楼 user-3 的回复:]  //定义改成吧 typedef struct _list_tags { int n; struct _list_tags* next; }list;  看看这个再写，用理论去实践 http://blog.csdn.net/feixiaoxing/article/details/6849457 好快的回帖速度，试了了通过，再试试另一个工程的，谢谢哈[/quote]

user: user-0
content: 引用 1 楼 user-3 的回复: //定义改成吧 typedef struct _list_tags { int n; struct _list_tags* next; }list;  看看这个再写，用理论去实践 http://blog.csdn.net/feixiaoxing/article/details/6849457 好快的回帖速度，试了了通过，再试试另一个工程的，谢谢哈

user: user-2
content: 结构体定义的时候少写了一个list，导致struct list不能识别，应该这样：  typedef struct list { int n; struct list* next; }list;  引用 楼主 Benjaminzhou93 的回复:typedef struct { 	int n; 	struct list* next; }list;  void main() { 	list lst, a, b, c, *d; 	lst.next = &a; 	a.next = &b; 	b.next = &c; 	d = lst.next->next;//13行 }   E:\Windows工作区\test3.c(10) : warning C4133: '=' : incompatible types - from 'struct list *' to 'struct list *' E:\Windows工作区\test3.c(11) : warning C4133: '=' : incompatible types - from 'struct list *' to 'struct list *' E:\Windows工作区\test3.c(12) : warning C4133: '=' : incompatible types - from 'struct list *' to 'struct list *' E:\Windows工作区\test3.c(13) : error C2037: left of 'next' specifies undefined struct/union 'list' 执行 cl.exe 时出错.

user: user-3
content: //定义改成吧 typedef struct _list_tags { int n; struct _list_tags* next; }list;  看看这个再写，用理论去实践 http://blog.csdn.net/feixiaoxing/article/details/6849457