1、 向链表添加节点
向链表添加节点,其实,在程序运行的过程中,我们可以给已经存在的链表添加新的节点,
但是,在添加新的节点以后,我们一定要把新节点的前一个节点以及后一个节点连接上,
否则,在添加新节点以后,链表就会断开。
2、例子:
struct ST //定义了结构体ST
{
int Number; //编号,用于记录一个整型数
struct ST * next; //定义一个ST结构体的指针变量next成员,指向链表中下一个节点
};
void main()
{
struct ST * head; //定义了结构体ST的指针变量head指向第一个节点
struct ST * p1; //定义了结构体ST的指针变量p1指向当前节点
int len = sizeof( struct ST ); //获取结构体ST的大小并保存于len中
head = ( struct ST * ) malloc( len ); //分配第1个节点的内存空间,同时,返回
成功分配后的内存空间地址给head,所以,
head指向第1个节点。
head->Number = 1;
p1 = head; //让p1指向第一个节点
p1->next = ( struct ST * ) malloc( len ); //分配第2个节点的内存空间,
并让第1个节点的next成员指向第2个节点
p1 = p1->next; //让p1指向第二个节点
p1->Number = 2;
p->next = ( struct ST * ) malloc( len ); //分配第3个节点的内存空间
并让第2个节点的next成员指向第3个节点
p1 = p1->next; //让p1指向第三个节点
p1->Number = 3;
p1->next = NULL; //向next成员赋值为NULL,表示后面没有节点了。
//---------------------------------------------//
//以下代码是本次要学习与分析的代码//
//---------------------------------------------//
//目前链表中有3个节点,假如,现在我们要在第1个节点与2个节点之间插入新节点
//首先,我们要将p1指向第2个节点,而目前p1是指向第3个节点。
struct ST * NewNode; //定义了结构体ST的指针变量NewNode指向新节点
NewNode = ( struct ST * ) malloc( len );//为新节点分配内存空间。
p1 = head->next; //通过head->next对p1赋值,就可以让p1指向第2个节点,
因为,head当前是指向第1个节点,而它的next成员就
指向第2个节点。
head->next = NewNode; //让第1个节点指向新节点NewNode,而目前的head
是指向第1个节点,所以,将新节点NewNode的内存
地址赋值给head->next就让第1个节点指
向NewNode。
NewNode->next = p1; //让新节点NewNode的next成员指向p1,即指向原来
的第2个节点。
这样,就完成了在第1个节点与第2个节点之间插入
新节点NewNode的工作了。而且,在插入后,第1个
节点指向新节点,而新节点又指向原来第2个节点。
这样,就保证了链表没有断开。
}
=======================================================================
非常好,现在,我们已经掌握了C语言中的(向链表添加节点)但是,如何去运行用它呢?
所以,我们就需要通过下方的链接,进入到C语言的代码训练中,然后,通过实践去加深对该知识点的理解与运用。
>>>下载训练环境与使用说明(使用真实的开发环境,结合游戏闯关进行编程训练)
|