链表的简单示意

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

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。
内存分布图
链表的简单示意_第1张图片

你可能感兴趣的:(链表,数据结构)