線性結構常規操作(四)

定義存儲結構(以單向鏈表為主)

對于鏈表的定義,通過結構體進行定義,包括兩部分,一是數據域,另一個就是指針,用于指向下一個節點。

1,創建鏈表

定義鏈表:

struct nodesq{int data;//數據域,這里以int為例struct nodesq * netx;//指向自身類型的指針域
}

創建鏈表:棧式(往前/左走)、隊列式(往后/右走)
一般創建鏈表是通過循環創建的,這里為了方便理解才這樣創建的。

struct nodesq *p1,*p2,*p3;
p1 = new nodesq;
p1->date = a1;
p2 = new nodesq;
p2->date = a2;
//p2->next = p1;//棧式,即后來的當head
p1->next = p2;//隊列式

如圖所示:
在這里插入圖片描述

2,鏈表的查詢(按序號、按數據元素)

在這里插入圖片描述
例如:找數據域為a3的節點(按數據元素查找)
首先,有頭有尾成鏈才是鏈表;鏈表的查詢是建立在已創建鏈表的基礎上。
只需要查找p->data是不是a3即可,若不是,接著查找下一個,p=p->next;

head = p;//首先,將給定的head頭指針賦值給指針p
while(p->data != a3){//若當前節點的數據域不是a3p = p->next;//進行下一個節點判斷
}

例如:找序號為4的節點(按序號查找)
也就是查詢4次即可。
首先,有頭有尾成鏈才是鏈表;鏈表的查詢是建立在已創建鏈表的基礎上。
這里只需要定義一個變量wsq用于存儲序號即可,通過自加操作,到達4,則停下即可。

head = p;//首先,將給定的head頭指針賦值給指針p
int wsq=0;
while(wsq != 4){//若當前節點的數據域不是a3p = p->next;//進行下一個節點判斷wsq++;//序號自加
}
3,鏈表的插入

在這里插入圖片描述
例如:在a3之前插入數據域為a2‘的節點S
首先,有頭有尾成鏈才是鏈表;鏈表的查詢是建立在已創建鏈表的基礎上。
在a3之前插入a2’,這里關鍵點在于:①找到a3前的一個節點a2,將新插入的a2‘數據域對應的節點S的next指向a3節點。②a2所在的節點的next指向a2’所在的節點S。

head = p;//首先,將給定的head頭指針賦值給指針p
while(p->next->data != a3){//找a3前一個節點p = n->next;//沒找到,指針找下一個節點
}//當結束循環之后,p指向a3上一個節點位置
S->next = p->next;//p->next此時為a3所在節點,賦值給S節點的next,即S節點的next指向a3所在節點,此時a2所在節點和S節點的next都指向a3所在的節點
p->next = S;//將a2所在的節點原本指向a3所在節點,給改成指向S節點

最終實現效果圖如下:
在這里插入圖片描述

4,鏈表的刪除

在這里插入圖片描述
例如:刪除a3所在的節點
首先,有頭有尾成鏈才是鏈表;鏈表的查詢是建立在已創建鏈表的基礎上。
刪除a3所在的節點,需要找到a3所在的節點之前的一個節點,即a2所在的節點。然后,將a2所在的節點的next指向a3所在節點的下一個節點。

head = p;//首先,將給定的head頭指針賦值給指針p
while(p->next->data != a3){//找a3前一個節點p = n->next;//沒找到,指針找下一個節點
}//當結束循環之后,p指向a3上一個節點位置,即a2所在的節點
p->next = p->next->next;//p->next->next即a3所在節點的下一個節點,也就是a4所在的節點位置  賦值給  p->next也就是a2所在的節點的next

之后a3需要進行回收一下即可
最后的效果圖如下:
在這里插入圖片描述

5,鏈表的輸出
p = head;
while(p != NULL){//全部挨個輸出printf("%d",p->data);p = p->next;//找下一個節點
}
while(p->next != NULL){//最后一個節點不輸出printf("%d",p->data);p = p->next;//找下一個節點
}
6,循環鏈表

在這里插入圖片描述

7,雙向鏈表

在這里插入圖片描述

8,帶頭鏈表

在這里插入圖片描述

9,無頭鏈表

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379004.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379004.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379004.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ffplay分析 (暫停 / 播放處理)

《ffplay的數據結構分析》 《ffplay分析(從啟動到讀取線程的操作)》 《ffplay分析(視頻解碼線程的操作)》 《ffplay分析(音頻解碼線程的操作)》 《ffplay 分析(音頻從Frame(解碼后)隊列取數據到…

源碼 狀態機_[源碼閱讀] 阿里SOFA服務注冊中心MetaServer(1)

[源碼閱讀] 阿里SOFA服務注冊中心MetaServer(1)0x00 摘要0x01 服務注冊中心1.1 服務注冊中心簡介1.2 SOFARegistry 總體架構1.3 為什么要分層0x02 MetaServer2.1簡介2.2 問題0x03 代碼結構0x04 啟動運行4.1 集成部署4.2 獨立部署0x05 總體邏輯5.1 程序主體5.2 配置0x06 啟動6.1…

HttpService遠程校驗

今天學了下HttpService,和大家分享一下。HttpService是用來讀取遠程數據的一個對象,數據格式為XML。 我做了一個登陸校驗的功能,主要是通過HttpService將服務器端的用戶數據得到,然后在客戶端判斷輸入的用戶名和密碼是否存在。 主…

免費開源FTP Server軟件FileZilla Server

很多朋友在實際應用中都可能需要用到FTP Server類的軟件,這類軟件有很多,比較知名的有Serv-U、G6等,這里向大家介紹一下FileZilla Server,Windows平臺下一款不錯的FTP Server軟件,而且是免費的、開源的。 S…

Java BigDecimal floatValue()方法與示例

BigDecimal類floatValue()方法 (BigDecimal Class floatValue() method) floatValue() method is available in java.math package. floatValue()方法在java.math包中可用。 floatValue() method is used to convert a BigDecimal to a float value and when this BigDecimal m…

明明的隨機數(快排)

明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了N個1到1000之間的隨機整數(N≤100),對于其中重復的數字,只保留一個,把其余相同的數去掉,不同的數…

ffplay分析 (seek操作處理)

《ffplay的數據結構分析》 《ffplay分析(從啟動到讀取線程的操作)》 《ffplay分析(視頻解碼線程的操作)》 《ffplay分析(音頻解碼線程的操作)》 《ffplay 分析(音頻從Frame(解碼后)隊列取數據到…

android 代碼設置 鍵盤適應_硬核軟件,能在電腦上控制iPhone和Android手機

在電腦上控制手機大概已經不是什么新鮮操作,小米、華為都為自家手機和電腦的聯動推出了同屏操作之類的功能,此外也可以通過開源軟件Scrcpy來在Windows或者macOS上實現對安卓手機的控制,這些基本都只針對安卓手機。近期,奇客君發現…

網址出現error.aspx?aspxerrorpath=404.htm?aspxerrorpath=的原因及解決辦法轉

網址出現aspxerrorpath的問題描述 1.網頁打不開了,輸入網址后就提示error.aspx?aspxerrorpath/about-us.html,到底是什么原因啊? 2.ASP網站自定義了404錯誤頁,但訪問不存在的網址時網址錯誤頁后面總多出aspxerrorpath參數,怎么解…

ruby hash方法_Ruby中帶有示例的Hash.default(key = nil)方法

ruby hash方法Hash.default(key nil)方法 (Hash.default(keynil) Method) In this article, we will study about Hash.default(keynil) Method. The working of this method can be predicted with the help of its name but it is not as simple as it seems. Well, we will…

回文數、括號匹配(棧操作)

回文數 “xyzyx”是一個回文字符串,所謂回文字符串就是指正讀反讀均相同的字符序列,如“席主席”、“記書記”、“aha”和“ahaha”均是回文,但“ahah”不是回文。輸入一行字符(僅包含小寫英文字母a~z)請判斷這行字符…

ijkplayer 消息循環處理過程分析

ijkplayer 消息循環處理過程分析簡介一、消息隊列初始化1、 initWithContentURLString函數2、 ijkmp_ios_create函數3、 ijkmp_create函數二、消息隊列的消息循環處理函數啟動1、prepareToPlay函數2、ijkmp_prepare_async函數3、ijkmp_prepare_async_l函數4、ijkmp_msg_loop函數…

json解析對應的value為null_徒手擼一個JSON解析器

Java大聯盟致力于最高效的Java學習關注作者 | 田小波cnblogs.com/nullllun/p/8358146.html1、背景JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。相對于另一種數據交換格式 XML,JSON 有著諸多優點。比如易讀性更好,占用空間更少等。在 …

[一]設計模式初探

模式,顧名思義,就是做一種事情的方法歸納,就經驗來說,做什么事情有個好的方法來應對都是可以事半功倍的,在軟件開發中何謂好的模式? 我認為好的模式簡單來說就是保證你應對需求變化的時候不用做更多的代碼修改&#x…

Gentoo - ssh-agent配置

現在使用類似github這樣的service&#xff0c;一般來說都會配置ssh key認證。所以使用ssh-agent來管理私鑰就變的必要。在Gentoo下是這么配置的&#xff1a;- sudo emerge -avt keychain- 編輯.bashrc&#xff0c;加入keychain <private key 1 path> ... <private key…

java 方法 示例_Java ArrayDeque offerFirst()方法與示例

java 方法 示例ArrayDeque類offerFirst()方法 (ArrayDeque Class offerFirst() method) offerFirst() Method is available in java.lang package. offerFirst()方法在java.lang包中可用。 offerFirst() Method is used to add the given element at the front of this deque. …

平院Python習題

在讀寫文件之前&#xff0c;用于創建文件對象的函數是&#xff08; A &#xff09;。 A&#xff0e; open B&#xff0e; create C&#xff0e; file D&#xff0e;folder 解析&#xff1a; open(file, mode‘r’, buffering-1, encodingNone, errorsNone, newlineNone, close…

搭建srs服務器(rtmp)

搭建srs服務器&#xff08;rtmp&#xff09; 目錄:1、下載srs源碼&#xff08;從碼云上&#xff09;&#xff1a;2、 切換到srs.oschina&#xff1a;3、 這里使用3.0版本&#xff1a;4、 切換到trunk&#xff1a;5、 編譯&#xff1a;6、 啟動&#xff1a;7、查看日志輸出&…

MOSS信息管理策略定制(MOSS custom policies)

MOSS引入了信息管理策略&#xff0c;通過給文檔庫或列表附加一些策略可以實現一些自動化的功能&#xff0c;如自動給文檔打標簽&#xff0c;強制文檔的審核&#xff0c;啟用文檔的過期&#xff0c;甚至可以在用戶打印文檔時插入條形碼。難么&#xff0c;這么好用的功能是怎么實…

2560介紹_炒股高手收益翻10倍,只因妙用這一招2560戰法,看了都不虧了

(本文由公眾號越聲研究(yslc927yj)整理&#xff0c;僅供參考&#xff0c;不構成操作建議。如自行操作&#xff0c;注意倉位控制和風險自負。)選股是每個剛入市的新股民需掌握的技巧&#xff0c;通過資金選股了解資金流向&#xff0c;善用工具輕松選股&#xff0c;同時多留意行業…