日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单向链表添加元素操作

發布時間:2024/1/1 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单向链表添加元素操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創建單向鏈表

先創建鏈表并且初始化

添加元素操作

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}; }

創建結點

第二步 : 鏈接結點

鏈接結點
參數 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->54是新結點4->54鏈接53的下一個結點指向4結點3->4->5if(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函數

Link(List.list, Newnode);

第四步 鏈表的個數+1

++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->54是新結點4->54鏈接53的下一個結點指向4結點3->4->5if(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; }

把Current傳遞到Link函數

鏈接 第一步

鏈接 第二步

Link(Current, Newnode);

第四步 鏈表的個數+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; } ``

總結

以上是生活随笔為你收集整理的单向链表添加元素操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。