前言
大家好我是東木,在优快云上持续更新更多原创文章,唯一指定传送门:東木的博客
本文主要介绍一下关于带有头结点的单链表实现头、尾的插法,分享一些自己的想法。
结点node
typedef int elementType;
typedef struct LNode
{
elementType data;//数据域
struct LNode* next;//指针域
}node; //node为结点类型,
头插法
1.示意图
2.代码块
void addFirst(node*& head, elementType number)
{
//创建新结点并且赋值
node* p = new node;//创建一个新的结点
p->data = number;//将number赋给data域
//attach
p->next = head->next;//p的next指向head的next
head->next = p;//让head 的next指向p
}
尾插法
1.示意图
2.代码块
void addLast(node*& head, elementType number)
{
//创建一个新的结点,并且将number赋给data域
node* p = new node;
p->data = number;
p->next = NULL;//此处注意,因为是尾插法,新结点的next应该是NULL
//创建一个可移动node结构指针去找到最后一个结点
node* last = head->next;
//从开始寻找最后一个尾结点
if (last != NULL)//如果不只是有头结点的话,需要找到最后一个
{
//遍历到最后
while (last->next != NULL)
{
last = last->next; //last指向下一个
}
//连接
last->next = p;//last->next指向新结点p
}
else//如果只有头结点的话就可以直接连接
{
head->next = p;
}
}