首页 百科知识 动态链表建立

动态链表建立

时间:2022-09-22 百科知识 版权反馈
【摘要】:在建立链表时,也通常采取这种方法,不再需要定义结构体类型数组。①先定义一个结构体类型,要求该类型的最后一个成员必须是指向同结构体类型的指针。③利用动态内存分配函数从堆中申请存储空间作为链表的节点,将该存储空间的地址作为链表的头指针,并对该节点的各成员赋值。如果要求链表的节点数等于1,此链表创建成功,如果链表的节点数大于1,执行第④步操作。

8.5.3 动态链表建立

在编程时,为了节约内存资源,提高程序的执行速度,通常根据处理实际数据的多少从堆中临时申请存储空间,数据处理完毕后,再释放这些临时申请的存储空间。在建立链表时,也通常采取这种方法,不再需要定义结构体类型数组。

建立动态链表的一般步骤如下:

①先定义一个结构体类型,要求该类型的最后一个成员必须是指向同结构体类型的指针。该指针主要用来指向链表中的下一个节点。

②定义一个结构体类型的指针变量作为指向链表的指针。

③利用动态内存分配函数从堆中申请存储空间作为链表的节点,将该存储空间的地址作为链表的头指针,并对该节点的各成员赋值。其中,最后一个成员赋值为NULL。如果要求链表的节点数等于1,此链表创建成功,如果链表的节点数大于1,执行第④步操作。

④再次利用动态内存分配函数从堆中申请存储空间作为链表的下一个节点,将该存储空间的地址赋给上一个节点的最后一个成员,同时,对新节点的各成员赋值。其中,最新节点的最后一个成员赋值为NULL。

⑤重复第④步操作,直到整个链表创建成功。

例8.16 建立一个由5个学生数据组成的单向动态链表,输出节点中的数据。

程序如下:

img632

img633

img634

程序运行结果如下:

img635

上面的程序中,create函数是用来创建链表的一个自定义函数,形参n表示链表中节点的个数。函数体中定义了三个指向结构体类型数据的指针变量head、p1、p2,其中head表示链表的头指针,p2表示最新节点的指针,p1表示上一个节点的指针,通过语句p1->next=p2;p1=p2;p1->next=NULL;实现节点链接。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈