线性结构常规操作(四)
定義存儲結(jié)構(gòu)(以單向鏈表為主)
對于鏈表的定義,通過結(jié)構(gòu)體進行定義,包括兩部分,一是數(shù)據(jù)域,另一個就是指針,用于指向下一個節(jié)點。
1,創(chuàng)建鏈表
定義鏈表:
struct nodesq{int data;//數(shù)據(jù)域,這里以int為例struct nodesq * netx;//指向自身類型的指針域 }創(chuàng)建鏈表:棧式(往前/左走)、隊列式(往后/右走)
一般創(chuàng)建鏈表是通過循環(huán)創(chuàng)建的,這里為了方便理解才這樣創(chuàng)建的。
如圖所示:
2,鏈表的查詢(按序號、按數(shù)據(jù)元素)
例如:找數(shù)據(jù)域為a3的節(jié)點(按數(shù)據(jù)元素查找)
首先,有頭有尾成鏈才是鏈表;鏈表的查詢是建立在已創(chuàng)建鏈表的基礎(chǔ)上。
只需要查找p->data是不是a3即可,若不是,接著查找下一個,p=p->next;
例如:找序號為4的節(jié)點(按序號查找)
也就是查詢4次即可。
首先,有頭有尾成鏈才是鏈表;鏈表的查詢是建立在已創(chuàng)建鏈表的基礎(chǔ)上。
這里只需要定義一個變量wsq用于存儲序號即可,通過自加操作,到達4,則停下即可。
3,鏈表的插入
例如:在a3之前插入數(shù)據(jù)域為a2‘的節(jié)點S
首先,有頭有尾成鏈才是鏈表;鏈表的查詢是建立在已創(chuàng)建鏈表的基礎(chǔ)上。
在a3之前插入a2’,這里關(guān)鍵點在于:①找到a3前的一個節(jié)點a2,將新插入的a2‘數(shù)據(jù)域?qū)?yīng)的節(jié)點S的next指向a3節(jié)點。②a2所在的節(jié)點的next指向a2’所在的節(jié)點S。
最終實現(xiàn)效果圖如下:
4,鏈表的刪除
例如:刪除a3所在的節(jié)點
首先,有頭有尾成鏈才是鏈表;鏈表的查詢是建立在已創(chuàng)建鏈表的基礎(chǔ)上。
刪除a3所在的節(jié)點,需要找到a3所在的節(jié)點之前的一個節(jié)點,即a2所在的節(jié)點。然后,將a2所在的節(jié)點的next指向a3所在節(jié)點的下一個節(jié)點。
之后a3需要進行回收一下即可
最后的效果圖如下:
5,鏈表的輸出
p = head; while(p != NULL){//全部挨個輸出printf("%d",p->data);p = p->next;//找下一個節(jié)點 } while(p->next != NULL){//最后一個節(jié)點不輸出printf("%d",p->data);p = p->next;//找下一個節(jié)點 }6,循環(huán)鏈表
7,雙向鏈表
8,帶頭鏈表
9,無頭鏈表
總結(jié)
以上是生活随笔為你收集整理的线性结构常规操作(四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 驻马店治疗精子活率低最好的医院推荐
- 下一篇: 明明的随机数(快排)