C++:链表(有头链表)

来源:互联网 发布:二手手机是那个软件 编辑:程序博客网 时间:2024/06/05 05:55

介绍

把链表分为无头链表和有头链表。

无头链表:所有的节点都包含了有效数据,上一篇文章中演示代码使用的就是无头链表。

有头链表:用一个固定的头节点来指代整个链表,所有的对象都挂在这个头节点下面,而头节点不包含有效数据。

有头链表优点:

可以简化链表操作,当链表的对象个数为0时,无头链表不好表示。


演示代码

创建有头链表,封装函数,通过有头链表的链表头添加节点对象

#include <stdio.h>//结构体对象struct Student{char name[32];int  age;Student *pNext;};//查找链表中指定age的数据,返回指向该节点的地址Student * find(Student* p, int age){bool bFind = false; //用于判断是否找到while(p){if (p->age == age){bFind = true;break;}p = p->pNext;}if (bFind){return p;}else{return NULL;}}//通过链表头往链表中添加一个节点void addNode(Student* phead,Student *obj){//定位到链表的最后一个节点while(phead){if (phead->pNext == NULL){break;}phead = phead->pNext;}//添加该节点到链表的尾部phead->pNext = obj;}int main(){//创建3个对象Student stu[3] = {{"aaa", 30, 0},{"bbb", 31, 0},{"ccc", 32, 0}};//创建有头链表的链表头Student pHead = {"head", 0, 0};//添加节点addNode(&pHead, &stu[0]);addNode(&pHead, &stu[1]);return 1;}

欢迎加群交流:C/C++开发交流


扫码关注公众号"CPP开发之路"

原创粉丝点击