链表,是C语言的一种基础数据结构。
链表可以动态地进行存储分配,因此可将其看做一个功能强大的数组,在节点中可以定义多种数据类型,还可以根据需要修改、增加、删除节点。
链表都有一个头指针,一般以 head 来表示,存放的是一个地址。
链表中的节点分为两类,头结点(head)和一般节点(node),最后一个节点也叫尾节点(end)。其中,头结点是没有数据域的,尾节点一般不再指向其他节点,如下图所示。
一般节点可分为两部分:数据部分和指针部分。数据部分用来存放该节点所包含的数据,指针部分用来指向下一个节点。
链表的节点整体用结构体来定义,指针部分定义为指向本结构体类型的指针类型。
链表就如同车链子一样,head指向第一个节点,第一个节点又指向第二个节点,以此类推,直到最后一个节点,该节点不再指向其它节点,它称为“表尾”,它的地址部分放一个“NULL”,表示“空地址”,到此结束。
1、创建链表
在创建链表时,一般都会用 typedef struct 来定义新的类型名,这样在定义结构体变量时就比较简单。
创建链表的代码示例如下:
2、输出链表
输出链表比较简单,遍历输出即可。如下图所示。
运行上面的程序,比如创建了一个链表,里面包含3个节点,程序运行如下:
3、修改节点
修改链表中特定节点的值,如下图所示。
4、增加节点
增加节点就是把前节点的指针域链接上增加节点的数据域,再把增加节点的指针域链接上后节点的数据域。如下图所示。
5、删除节点
比如删除链表的节点q,就是把前节点p的指针域越过要删除的节点q,直接指向下下个节点。
即:p->next = q->next
需要注意的是,一定要记得释放q节点的空间。
相关阅读
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/86344.html