單鏈表定義如下:
typedef struct list
list;
鍊錶的簡單使用主要需要注意結尾處指標等邊界條件:
1.查詢某一元素,需要在查詢的判斷條件中加入當指標指向null時停止的條件否則將訪問null位址導致出錯;
2.增加元素的可以分為增加在第二個位置(複雜度:1)、最後乙個位置(複雜度:n)、順序位置(複雜度:n)。如無必要,優先選擇增加在第二個位置。增加元素的函式**如下:(新建指標,分配記憶體,加入到鍊錶中)
void insert_list(list* head,int d)
3..刪除某一元素。刪除單鏈表內某一元素時,需要把被刪除元素前乙個元素的next指向其下乙個,由於增加元素用了malloc,相應的刪除還要free(否則記憶體洩漏)。這兩個操作無論誰先進行另乙個就無法順利執行。需要乙個臨時指標來記錄將要被free的結構體記憶體位址。**如下:
void delete_list(list* head,int d)
else
printf("there is no %d in list\n",d);
}
定義如下:
typedef struct doublelist
doublelist;
雙鏈表要更加注意鍊錶結尾處的指標為null問題:
1.增加元素:由於在增加元素時還需要把後面元素指向前面的指標也改變,就要額外討論當鍊表結尾處時產生的問題。看一下最後兩行和單鏈表的不同就明白了。
void insert_doublelist(doublelist* head,int d)
2.刪除元素:因為雙鏈表有兩個指標,刪除元素就不需要臨時的結構體指標了。同樣也是要討論null的問題:void delete_doublelist(doublelist* head,int d)
else
}else
printf("there is no %d in doublelist\n",d);
}
最後,刪除元素不能把第乙個元素給刪了。刪了就找不到頭在哪了,除非把後面的元素變數名也記下來。 JQuery的增加元素,刪除元素
let div elm elm 可以建立乙個div元素,並內容為elm prepend 方法會把元素新增到匹配元素最前面,類似原生js裡的insertbefore 內部新增元素後,生成的是父子關係 原來的 before 方法會把元素新增在匹配元素前面 原來的 after 方法會把元素新增在匹配元素後...
雙向鍊錶的新增元素與刪除元素
author eightn0 create 2021 03 13 20 36 雙向鍊錶 乙個字段存放資料,兩個字段存放指標,乙個指標指向後面的節點,另乙個指標指向前面的節點 llink data rlink 將原表第乙個節點的左鏈結指向新節點 將原表表頭指標head指向新節點 將新節點的左鏈結指向原...
單向鍊錶的刪除元素,新增元素等操作
include include include include include struct student struct student tbl struct student add struct student tbl tbl,int id,char name else else else el...