意思就是往前添加元素
可以用C++ 的 new 创建结点 或者 用面向过程 的 function 来 创建
函数声明
//创建单向链表结点
//创建链表头结点的函数
//参数:LinkNode* where = nullptr
//LinkNode* where目的是给list->next赋值、不初始化数据域
LinkNode* creatorLinkNode(LinkNode* where = nullptr);
//创建单向链表结点
//参数:const ElemType &elem
//const ElemType &elem 目的是给 新结点的数据域初始化、不初始化指针域
LinkNode* creatorLinkNode(const ElemType &elem);
函数实现
LinkNode* creatorLinkNode(LinkNode* where){
LinkNode* node = new LinkNode;
node->next = where;
return node;
}
LinkNode* creatorLinkNode(const ElemType& elem) {
return new LinkNode{ elem ,nullptr};
}
链接结点
参数 LinkNode& node, LinkNode& newnode**
链接思路:
如果(node->next)不是空指针
新结点的下一个结点指向传入结点的下一个结点
否则
结点的下一个结点指向新结点
相当于 3->5
4是新结点
4->5
4链接5
3的下一个结点指向4结点
3->4->5
伪代码::
如果(结点的next!=空指针){//为真
新结点的next指针指向 结点的next指针;;
}
结点的next指针指向 新结点;
函数声明
/*
链接结点
参数 LinkNode*& node, LinkNode*& newnode
链接思路:
如果(node->next)不是空指针
新结点的下一个结点指向传入结点的下一个结点
否则
结点的下一个结点指向新结点
相当于 3->5
4是新结点
4->5
4链接5
3的下一个结点指向4结点
3->4->5
if(node->next){
newnode->next = node->next;
}
node->next = newnode;
*/
void Link(LinkNode*& node, LinkNode*& newnode)
函数实现
void Link(LinkNode*& node, LinkNode*& newnode){
if (node->next) {
newnode->next = node->next;
}
node->next = newnode;
}
Link(List.list, Newnode);
++List.size;
前插法 代码
//LinkNode* &Newnode 主调函数 分配内存
void LinkListInsert_froot(LinkList& List, LinkNode* &Newnode) {
Link(List.list, Newnode);
++List.size;
}
意思就是靠后添加元素
可以用C++ 的 new 创建结点 或者 用面向过程 的 function 来 创建
函数声明
//创建单向链表结点
//创建链表头结点的函数
//参数:LinkNode* where = nullptr
//LinkNode* where目的是给list->next赋值、不初始化数据域
LinkNode* creatorLinkNode(LinkNode* where = nullptr);
//创建单向链表结点
//参数:const ElemType &elem
//const ElemType &elem 目的是给 新结点的数据域初始化、不初始化指针域
LinkNode* creatorLinkNode(const ElemType &elem);
函数实现
LinkNode* creatorLinkNode(LinkNode* where){
LinkNode* node = new LinkNode;
node->next = where;
return node;
}
LinkNode* creatorLinkNode(const ElemType& elem) {
return new LinkNode{ elem ,nullptr};
}
while (current->next){
current = current->next;
}
链接结点
参数 LinkNode& node, LinkNode& newnode**
链接思路:
如果(node->next)不是空指针
新结点的下一个结点指向传入结点的下一个结点
否则
结点的下一个结点指向新结点
相当于 3->5
4是新结点
4->5
4链接5
3的下一个结点指向4结点
3->4->5
伪代码::
如果(结点的next!=空指针){//为真
新结点的next指针指向 结点的next指针;;
}
结点的next指针指向 新结点;
函数声明
/*
链接结点
参数 LinkNode*& node, LinkNode*& newnode
链接思路:
如果(node->next)不是空指针
新结点的下一个结点指向传入结点的下一个结点
否则
结点的下一个结点指向新结点
相当于 3->5
4是新结点
4->5
4链接5
3的下一个结点指向4结点
3->4->5
if(node->next){
newnode->next = node->next;
}
node->next = newnode;
*/
void Link(LinkNode*& node, LinkNode*& newnode)
函数实现
void Link(LinkNode*& node, LinkNode*& newnode){
if (node->next) {
newnode->next = node->next;
}
node->next = newnode;
}
Link(Current, Newnode);
++List.size;
尾插法 代码
void LinkListInsert_back(LinkList& List, LinkNode*& Newnode) {
LinkNode* current = List.list;
while (current->next){
current = current->next;
}
Link(current, Newnode);
++List.size;
}
``