最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++鏈表節(jié)點(diǎn)的添加和刪除介紹

 更新時間:2022年01月10日 08:58:12   作者:與C決戰(zhàn)的小蘿卜頭  
大家好,本篇文章主要講的是C++鏈表節(jié)點(diǎn)的添加和刪除介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

前言

鏈表是一種動態(tài)的數(shù)據(jù)結(jié)構(gòu),因?yàn)樵趧?chuàng)建鏈表時,不需要知道鏈表的長度,只需要對指針進(jìn)行操作。

1. 節(jié)點(diǎn)的創(chuàng)建

鏈表的節(jié)點(diǎn)包括兩部分,分別是:數(shù)據(jù)域和(指向下一個節(jié)點(diǎn)的)指針域。

struct Node {
	int data;
	struct Node* next;
};

2. 鏈表的定義

struct Node* createList() {
	//創(chuàng)建一個指針來表示表頭
	struct Node* headNode = (struct Node*)malloc(sizeof(struct Node));
	headNode->next = NULL;
	return headNode;
}

3. 創(chuàng)建節(jié)點(diǎn)

struct Node* createNode(int data) {
	//創(chuàng)建一個新的指針節(jié)點(diǎn)
	struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
	//結(jié)構(gòu)體變量初始化
	newNode->data = data;
	newNode->next = NULL;
	return newNode;
}

4. 節(jié)點(diǎn)的插入

節(jié)點(diǎn)的插入分為三種:頭插法、尾插法、在鏈表中間插入節(jié)點(diǎn)。

 4.1 頭插法

頭插法,顧名思義就是在鏈表的第一個節(jié)點(diǎn)插入一個節(jié)點(diǎn)。

解決方法:讓新插入的節(jié)點(diǎn)的next指針指向鏈表的頭結(jié)點(diǎn)即可。

void insertNodeByHead(struct Node* headNode, int data) {
	struct Node* newNode = createNode(data);
	newNode->next = headNode->next;
	headNode->next = newNode;
}

 4.2 尾插法

尾插法,顧名思義就是在鏈表的末尾增加一個節(jié)點(diǎn)。

解決思路:首先找到鏈表的最后一個節(jié)點(diǎn);然后讓最后的節(jié)點(diǎn)的next指針指向要插入的這個節(jié)點(diǎn),插入的節(jié)點(diǎn)的next指針指向NULL即可。

void insertNodeByTail(struct Node* headNode, int data) {
	struct Node* newNode = createNode(data);
	while (headNode->next != NULL)
	{
		headNode = headNode->next;//找到最后一個節(jié)點(diǎn)
	}
	headNode->next = newNode;
	newNode->next = NULL;
}

 4.3 插入中間節(jié)點(diǎn)

插入中間節(jié)點(diǎn):即在數(shù)據(jù)為 i 的節(jié)點(diǎn)后面添加新的節(jié)點(diǎn)。

解決思路:首先判斷數(shù)據(jù)為 i 的節(jié)點(diǎn)posNode是否在鏈表中存在;然后從第一個節(jié)點(diǎn)開始查找節(jié)點(diǎn)posNode。找到后就讓插入的節(jié)點(diǎn)的next指針指向posNode的下一個節(jié)點(diǎn),posNode的next指針指向新插入的節(jié)點(diǎn)即可。

void insertNodeByCenter(struct Node* headNode, int data, int i) {
	struct Node* posNode = headNode;
	/*struct Node* posNodeFront = headNode;*/
	struct Node* newNode = createNode(data);
	if (posNode == NULL) {
		printf("無法查找此數(shù)據(jù),鏈表為空\n");
	}
	else {
		while (posNode->data != i) {
			posNode = posNode->next;//前面位置到達(dá)了后面節(jié)點(diǎn)的位置
			/*posNode = posNodeFront->next;*///后面位置變成了原來位置的下一個
			if (posNode == NULL) {
				printf("未找到此數(shù)據(jù)\n");
				break;
			}
		}
		newNode->next = posNode->next;
		posNode->next = newNode;
	}
}

 總結(jié)

到此這篇關(guān)于C++鏈表節(jié)點(diǎn)的添加和刪除介紹的文章就介紹到這了,更多相關(guān)C++鏈表節(jié)點(diǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解C語言如何計(jì)算結(jié)構(gòu)體大小(結(jié)構(gòu)體的內(nèi)存對齊)

    詳解C語言如何計(jì)算結(jié)構(gòu)體大小(結(jié)構(gòu)體的內(nèi)存對齊)

    結(jié)構(gòu)體的內(nèi)存對齊是有關(guān)結(jié)構(gòu)體內(nèi)容的很重要一個知識點(diǎn),主要考察方式是計(jì)算結(jié)構(gòu)體的字節(jié)大小,所以本文就給大家詳細(xì)介紹一下C語言如何計(jì)算結(jié)構(gòu)體大小,文中的代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • C++?數(shù)據(jù)結(jié)構(gòu)超詳細(xì)講解順序表

    C++?數(shù)據(jù)結(jié)構(gòu)超詳細(xì)講解順序表

    程序中經(jīng)常需要將一組數(shù)據(jù)元素作為整體管理和使用,需要創(chuàng)建這種元素組,用變量記錄它們,傳進(jìn)傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關(guān)系由它們的存儲順序自然表示
    2022-03-03
  • 淺析C++中boost.variant的幾種訪問方法

    淺析C++中boost.variant的幾種訪問方法

    variant類型在C++14并沒有加入,若想在不支持C++17的編譯器上使用variant類型,我們可以通過boost的variant類型,variant類型可以表示任意一種類型和any類型有些相似,但還是有些區(qū)別下面將淺談variant的幾種訪問方法,感興趣的朋友們下面來一起看看吧。
    2016-10-10
  • Opencv圖像處理之圖像增加邊框

    Opencv圖像處理之圖像增加邊框

    這篇文章主要為大家詳細(xì)介紹了Opencv圖像處理之圖像增加邊框,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • C++20 格式化字符串的實(shí)現(xiàn)

    C++20 格式化字符串的實(shí)現(xiàn)

    本文主要講述了C++20中新引入的std::format功能,該功能用于格式化字符串,提供了一種簡潔、類型安全且靈活的方式來構(gòu)建格式化字符串,文章從使用場景、格式化規(guī)則、自定義類型的格式化等方面進(jìn)行了詳細(xì)的介紹,感興趣的可以了解一下
    2024-10-10
  • c++ base64編解碼使用示例

    c++ base64編解碼使用示例

    這篇文章主要介紹了c++的base64編解碼使用示例,需要的朋友可以參考下
    2014-02-02
  • C語言中改變目錄的相關(guān)操作函數(shù)詳解

    C語言中改變目錄的相關(guān)操作函數(shù)詳解

    這篇文章主要介紹了C語言中改變目錄的相關(guān)操作函數(shù)詳解,分別是fchdir()函數(shù)和rewinddir()函數(shù)的使用方法,需要的朋友可以參考下
    2015-09-09
  • C語言超詳細(xì)講解指向函數(shù)的指針

    C語言超詳細(xì)講解指向函數(shù)的指針

    C語言程序在編譯后,每個函數(shù)都有一個首地址(也就是函數(shù)第一條指令的地址),這個地址稱為函數(shù)的指針??梢远x指向函數(shù)的指針變量,使用指針變量間接調(diào)用函數(shù)
    2022-07-07
  • C++深入淺出講解內(nèi)存四區(qū)與new關(guān)鍵字的使用

    C++深入淺出講解內(nèi)存四區(qū)與new關(guān)鍵字的使用

    內(nèi)存四區(qū),一個非常重要的知識點(diǎn),搞懂了內(nèi)存四區(qū),才能更快的去搞懂指針。我們寫的C語言代碼,不夸張的說,都是直接或者間接的在操作內(nèi)存。C語言之所以能夠開發(fā)操作系統(tǒng),就是指針的存在,而指針說白了就是地址,內(nèi)存地址,指針變量說白了就是存儲地址的變量
    2022-05-05
  • C++學(xué)習(xí)之函數(shù)模板的使用詳解

    C++學(xué)習(xí)之函數(shù)模板的使用詳解

    函數(shù)模板可以適用泛型來定義函數(shù),其中泛型可以是(int, double, float)等替換。這篇文章主要來和大家聊聊函數(shù)模板的具體使用,感興趣的可以了解一下
    2023-03-03

最新評論

扎兰屯市| 宁波市| 石台县| 怀仁县| 钦州市| 麟游县| 沂南县| 永平县| 大名县| 旌德县| 青州市| 颍上县| 阜城县| 大名县| 秦皇岛市| 沙洋县| 沁阳市| 清新县| 汉寿县| 讷河市| 江孜县| 遂宁市| 马龙县| 伊金霍洛旗| 天水市| 静乐县| 北安市| 汨罗市| 南郑县| 六枝特区| 黎川县| 大足县| 西和县| 柘城县| 威海市| 阜南县| 横峰县| 婺源县| 汝城县| 平利县| 屏东县|