1、 输出节点信息
输出节点信息,其实,就是通过 printf 函数把链表中的节点信息输出,同时,每个节点中都有一个指针成员,
用于指向下一个节点,这样,就可以找出整个链表中的每一个节点,然后,再输出就可以了。
2、例子:
struct ST //定义了结构体ST
{
int Number; //编号,用于记录一个整型数
struct ST * next; //定义一个ST结构体的指针变量next成员,指向链表中下一个节点
};
void main()
{
struct ST * head; //定义了结构体ST的指针变量head作为第一个节点
int len = sizeof( struct ST );
head = ( struct ST * ) malloc( len ); //分配第1个节点的内存空间
head->Number = 1;
head->next = ( struct ST * ) malloc( len ); //分配第2个节点的内存空间
head->next->Number = 2;
head->next->next = ( struct ST * ) malloc( len );//分配第3个节点的内存空间
head->next->next->Number = 3;
//---------------------------------------------//
//以下代码是本次要学习与分析的代码//
//---------------------------------------------//
head->next->next->next = NULL; //第3个节点的next成员赋值为NULL,
代表第3个节点后没有其它节点了。
struct ST * p;//定义了结构体ST的指针变量p ,用于指向当前节点。
p = head; //让p指向链表中第一个节点head。
这里是将head的地址赋给了p。所以,p就指向了head。
do
{
printf("%d",p->Number);//输出p所指向的节点中,成员Number的值。
p = p -> next; //让p指向下一个节点。
}while( p!=NULL); //判断p是否等于NULL空值,如果相等则结束循环。
}
例子分析:
(1)例子中大部分的代码是使用了上一章“动态链表”学习中代码,包括动态生成第1,2,3个节点
并让它们形成链表的代码。
(2)我们的本次的分析从定义结构体指针变量p开始,该变量的作用是指向链表中当前的节点。
(3)首先,我们通过代码p=head,让p指向链表中第一个节点head。
(4)然后,我们进入到do...while循环中,首先通过printf函数,输出当前节点中的Number成员
中的值,而当前节点是第一个节点,所以,它的Number成员中的值为1。即输出1。
(5)然后,我们再执行p = p->next 这行代码,而p中的next成员是指向下一个节点,即第2个节点的
内存空间址,所以,将它赋给p,就等于将p指向第2个节点。
(6)然后,再判断p是否等于NULL,如果,等于NULL就结束循环,因为,后面没有节点了。
而在第3个节点中,它的next成员是被赋为NULL的。所以,当处理第3个节点时就会
结束循环。
小结:
(1)另外定义一个结构体指针变量p用于指向当前节点,就不用再使用head->next->next->next
这样的代码了。
(2)注意为链表中最后一个节点的next成员设置一个NULL,空值,代表链表结束。
(3)把链表中第1个节点赋值给p,就是让p指向了链表中第1个节点,
然后,通过p调用节点中的next成员,并将next成员所指向的内存空间地址赋给p,
就是将p指向下一个节点,这样,就可以找到链表中每一个节点了。
=======================================================================
非常好,现在,我们已经掌握了C语言中的(输出节点信息)但是,如何去运行用它呢?
所以,我们就需要通过下方的链接,进入到C语言的代码训练中,然后,通过实践去加深对该知识点的理解与运用。
>>>下载训练环境与使用说明(使用真实的开发环境,结合游戏闯关进行编程训练)
|