单向链表添加元素操作
創(chuàng)建單向鏈表
先創(chuàng)建鏈表并且初始化
添加元素操作
Size一個(gè)都沒有的時(shí)候
證明是空鏈表
前插法
意思就是往前添加元素
第一步 : 創(chuàng)建結(jié)點(diǎn)
可以用C++ 的 new 創(chuàng)建結(jié)點(diǎn) 或者 用面向過程 的 function 來 創(chuàng)建
函數(shù)聲明
//創(chuàng)建單向鏈表結(jié)點(diǎn) //創(chuàng)建鏈表頭結(jié)點(diǎn)的函數(shù) //參數(shù):LinkNode* where = nullptr //LinkNode* where目的是給list->next賦值、不初始化數(shù)據(jù)域 LinkNode* creatorLinkNode(LinkNode* where = nullptr);//創(chuàng)建單向鏈表結(jié)點(diǎn) //參數(shù):const ElemType &elem //const ElemType &elem 目的是給 新結(jié)點(diǎn)的數(shù)據(jù)域初始化、不初始化指針域 LinkNode* creatorLinkNode(const ElemType &elem);函數(shù)實(shí)現(xiàn)
LinkNode* creatorLinkNode(LinkNode* where){LinkNode* node = new LinkNode;node->next = where;return node;}LinkNode* creatorLinkNode(const ElemType& elem) {return new LinkNode{ elem ,nullptr}; }創(chuàng)建結(jié)點(diǎn)
第二步 : 鏈接結(jié)點(diǎn)
鏈接結(jié)點(diǎn)
參數(shù) LinkNode& node, LinkNode& newnode**
鏈接思路:
如果(node->next)不是空指針
新結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)指向傳入結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)
否則
結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)指向新結(jié)點(diǎn)
相當(dāng)于 3->5
4是新結(jié)點(diǎn)
4->5
4鏈接5
3的下一個(gè)結(jié)點(diǎn)指向4結(jié)點(diǎn)
3->4->5
偽代碼::
如果(結(jié)點(diǎn)的next!=空指針){//為真
新結(jié)點(diǎn)的next指針指向 結(jié)點(diǎn)的next指針;;
}
結(jié)點(diǎn)的next指針指向 新結(jié)點(diǎn);
函數(shù)聲明
/* 鏈接結(jié)點(diǎn) 參數(shù) LinkNode*& node, LinkNode*& newnode 鏈接思路: 如果(node->next)不是空指針 新結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)指向傳入結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn) 否則 結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)指向新結(jié)點(diǎn)相當(dāng)于 3->54是新結(jié)點(diǎn)4->54鏈接53的下一個(gè)結(jié)點(diǎn)指向4結(jié)點(diǎn)3->4->5if(node->next){newnode->next = node->next;} node->next = newnode; */ void Link(LinkNode*& node, LinkNode*& newnode)函數(shù)實(shí)現(xiàn)
void Link(LinkNode*& node, LinkNode*& newnode){if (node->next) {newnode->next = node->next;}node->next = newnode; }鏈接 第一步
鏈接 第二步
第三步 把鏈表的頭結(jié)點(diǎn)傳遞到Link函數(shù)
Link(List.list, Newnode);第四步 鏈表的個(gè)數(shù)+1
++List.size;前插法 代碼
//LinkNode* &Newnode 主調(diào)函數(shù) 分配內(nèi)存 void LinkListInsert_froot(LinkList& List, LinkNode* &Newnode) {Link(List.list, Newnode);++List.size; }尾插法
意思就是靠后添加元素
第一步 : 創(chuàng)建結(jié)點(diǎn)
可以用C++ 的 new 創(chuàng)建結(jié)點(diǎn) 或者 用面向過程 的 function 來 創(chuàng)建
函數(shù)聲明
//創(chuàng)建單向鏈表結(jié)點(diǎn) //創(chuàng)建鏈表頭結(jié)點(diǎn)的函數(shù) //參數(shù):LinkNode* where = nullptr //LinkNode* where目的是給list->next賦值、不初始化數(shù)據(jù)域 LinkNode* creatorLinkNode(LinkNode* where = nullptr);//創(chuàng)建單向鏈表結(jié)點(diǎn) //參數(shù):const ElemType &elem //const ElemType &elem 目的是給 新結(jié)點(diǎn)的數(shù)據(jù)域初始化、不初始化指針域 LinkNode* creatorLinkNode(const ElemType &elem);函數(shù)實(shí)現(xiàn)
LinkNode* creatorLinkNode(LinkNode* where){LinkNode* node = new LinkNode;node->next = where;return node;}LinkNode* creatorLinkNode(const ElemType& elem) {return new LinkNode{ elem ,nullptr}; }創(chuàng)建結(jié)點(diǎn)
循環(huán)找到末尾結(jié)點(diǎn)
while (current->next){current = current->next;}第二步 : 鏈接結(jié)點(diǎn)
鏈接結(jié)點(diǎn)
參數(shù) LinkNode& node, LinkNode& newnode**
鏈接思路:
如果(node->next)不是空指針
新結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)指向傳入結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)
否則
結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)指向新結(jié)點(diǎn)
相當(dāng)于 3->5
4是新結(jié)點(diǎn)
4->5
4鏈接5
3的下一個(gè)結(jié)點(diǎn)指向4結(jié)點(diǎn)
3->4->5
偽代碼::
如果(結(jié)點(diǎn)的next!=空指針){//為真
新結(jié)點(diǎn)的next指針指向 結(jié)點(diǎn)的next指針;;
}
結(jié)點(diǎn)的next指針指向 新結(jié)點(diǎn);
函數(shù)聲明
/* 鏈接結(jié)點(diǎn) 參數(shù) LinkNode*& node, LinkNode*& newnode 鏈接思路: 如果(node->next)不是空指針 新結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)指向傳入結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn) 否則 結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)指向新結(jié)點(diǎn)相當(dāng)于 3->54是新結(jié)點(diǎn)4->54鏈接53的下一個(gè)結(jié)點(diǎn)指向4結(jié)點(diǎn)3->4->5if(node->next){newnode->next = node->next;} node->next = newnode; */ void Link(LinkNode*& node, LinkNode*& newnode)函數(shù)實(shí)現(xiàn)
void Link(LinkNode*& node, LinkNode*& newnode){if (node->next) {newnode->next = node->next;}node->next = newnode; }把Current傳遞到Link函數(shù)
鏈接 第一步
鏈接 第二步
Link(Current, Newnode);第四步 鏈表的個(gè)數(shù)+1
++List.size;尾插法 代碼
void LinkListInsert_back(LinkList& List, LinkNode*& Newnode) {LinkNode* current = List.list;while (current->next){current = current->next;}Link(current, Newnode);++List.size; } ``總結(jié)
以上是生活随笔為你收集整理的单向链表添加元素操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十行代码实现浏览器自动刷新
- 下一篇: 测试环境搭建心得