链表的简单示意

链表的实质就是指针。存放下一个元素的地址。

typedef struct spy
{
    
    
	char * name ;
	struct spy * next;
}spy ,*p_spy;

spy A ={
    
    'A',NULL};
spy B ={
    
    'B',NULL};
spy C ={
    
    'C',NULL};

int main()
{
    
    
		p_spy =&A;
		A.next=&B;//A是一个结构体变量,A.next是对这个结构体变量的引用。next本身是一个结构体变量的指针,所以next只能赋值结构体变量的地址。即将B的地址赋值给next。
		B.next=&C;
		C.next=NULL;
		while(p_spy )
		{
    
    
			printf("%s\r\n",p_spy->name);
			p_spy=p_spy->next;
		}

};

首次执行,p_spy保存了结构体变量A的地址,所以首次执行p_spy->name打印A;执行
p_spy=p_spy->next;后,结构体指针p_spy保存了下一个结构体变量的地址。p_spy依然不等于0,第二次打印了B……第三次打印了C。
内存分布图
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35318223/article/details/131760486