本文主要介绍链表结构,本人才疏学浅,文中如有出现知识点错误或者代码错误,还请大家多多指正。
首先是单向无环链表:
在单向无环链表中,每个节点由两部分组成: data 和 next_node,next_node用于指向下一个节点,而data表示在当前节点中存储的数据。
struct node{
int data;
node* next_node;
};
在建立链表时有两种方法:头插法和尾插法。
尾插法比较符合我的平时使用习惯,即将后一个结点插入到前一个节点的后面。而头插法则比较另类,他将后一个节点插入到前一个节点的前面。因此,我们遍历尾插法的链表得到的结果和我们的原始数据是一致的,而遍历头插法得到的则是翻转后的。
在此需要特别声明,单链表之所以为单链表,就是因为我们只能从当前节点到下一节点,而无法到达上一节点,这是因为我们的节点内容中没有包含上一节点的指针。是无论如何也没有回头路的,而且要找到第k个元素也只能一个个找过去,无论是添加还是删除第k位我们都需要先到达目标位置的前一个节点才能进行操作。
经典算法:
寻找单链表中的最大值: