// 单链表尾插法
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
int data;
struct LNode *next;
}LNode, LinkList;
LNode * List_Weiinsert(LNode * &L){
int x;
L = (LNode *)malloc(sizeof(LNode));
//LinkList s,r=L;
LNode *s,*r=L;
scanf("%d",&x);
while(x!=9999){
s = (LNode *)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
r->next=NULL;
return L;
}
void PrintList(LNode *L){
LNode *p;
p=L;
while(p->next!=NULL){
printf("%d ",p->next->data);
p=p->next; //为什么不能用 p=p++
}
}
int main(){
LNode *L;
L = List_Weiinsert(L);
PrintList(L);
}
![](https://i-blog.csdnimg.cn/blog_migrate/17809d5d332a51d96872a8ebe999d451.png)
错误过程
如果将LNode *改成LinkList会报错,如下图所示
因为10行函数形参是 LinkList类型,然后12行强制转换成LNode *,就报错了,所两个类型无法转换,但是自己看书理解的这两个可以互换,问题不大,一直找不到问题所在。