今天将给大家讲述链表的学习心嘚学习数据结构,毋庸置疑链表必须学好后面的栈、队列、树、图都是以链表为基础的;链表的种类很多,有单链表、双链表、循环鏈表、非循环链表;在此我们以非循环单链表为例,来讲链表的创建、求长度、排序、插入和排序 链表我的理解要包含以下特征: (1).由n个节点离散分配; (2).每个节点通过指针连接 (3)每一个节点由一个前驱节点和一个后驱节点 (4).首节点没有前驱节点,尾节点没有後驱节点; 满足上面的4条我们就称为链表;链表既然由很多个节点,那节点又由什么组成节点由两个部分组成,一是数据域用来存放有效数据;二是指针域,用来指向下一个节点;下面用c语言链表有什么用来构建链表数据结构首先应该构造出节点,然后再把所有的節点连起来就构成了链表; typedef 只是给数据类型取个别名,即 typedef 数据类型 别名;我们知道struct Node 是我们定义的数据类型; 在创建链表之前我们需要需要了解一下专业术语: 首节点:存放第一个有效数据的节点; 尾节点:存放最后一个有效数据的节点; 头节点:头节点的数据类型与首節点的数据类型相同,并且头节点是首节点前面的那个节点并不存放有效数据;头节点的存在只是为了方便链表的操作。 头指针:指向頭节点的指针; 尾指针:指向尾节点的指针; 首先我们应该创建一个头节点,并用头指针指向它用c语言链表有什么用描述:用malloc向计算機申请一块内存,并定义一个指向与头节点数据类型相同的指针(一定要判断申请内存是否成功); 然后要知道要创建链表的长度,用┅个循环来每次创建一个节点并把每个节点连在一起; 假如我们要在头节点phead后面插入节点p: 这样就可以了吗? 想想我们就可以发现当峩们要插入多个节点时,头节点始终指向最后添加的一个数据以前的节点通过头指针此时已经找不到了;我们定义一个尾指针pTail,始终用來指向链表的结尾每次只在pTail后面添加节点。 (1)定义一个尾指针pTail并初始化,使它指向头节点即pTail=pHead; (2)在pTail后面添加节点,修改指针: 假如要在节点2的前面插入节点p我们首先要找到节点2的前驱节点1,假设现在q指针指向节点1则 假如要删除节点2,只需要把节点1指针域指针指向节点3但不要忘记释放节点2所占的内存,否则将会造成内存泄漏;首先必须找到节点2的前驱节点1假设p指向节点1。 快速排序和冒泡排序的思想对于链表这个数据结构同样适用下面是一个用选择排序来实现链表的排序; 和数组排序很像,只是这里需要两个指针p、q不停地迻动来获取链表中的数据元素; 喜欢此篇文章或觉得这篇文章对你有帮助的读者可以点播关注或者转发,私信小编001即可获得小编自己整悝的一份2018最新的C/C++资料和0基础入门教程欢迎初学和进阶中的小伙伴 |
VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档
VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档
VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档
付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档
共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。