数据结构中链表的结构体
typedef struct LNode
{
ElemType data;
struct LNode* next;
}LinkNode;
其中struct LNode* next应理解为一种struct LNode类型的指针,它存放的是指向下一个struct LNode类型的地址,因为指针的赋值必须类型是相同的,比如:
int a = 6;
double* p = &a;
这种赋值是错误的,指针的赋值必须和a都是相同类型的数据,所以想要指向下一个相同结构体必须定义为struct LNode* next的形式。
关于空间的分配
LinkNode ss = {
10 };
printf("%p\n", &ss.data);//00EFFB24
printf("%p\n", &ss.next);//00EFFB28
ss.next = (LinkNode*)malloc(sizeof(LinkNode));
printf("-----------------------------------------\n");
printf("%p\n", &ss.next);//00EFFB28
在ss初始化的时候ss.next就已经分配了空间,相当于给了ss一个malloc,ss.next里面应当存放一个struct LNode的地址。
但是他是不是不断地套娃循环?
LinkNode ss = {
10 };
printf("%p\n", &ss.data);//0073FAB8