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