日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

数据结构和算法:(3)3.2.2单链表的整表删除

發布時間:2023/11/27 生活经验 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构和算法:(3)3.2.2单链表的整表删除 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們不使用這個單鏈表時,我們需要把他在內存中釋放掉,以便于流出空間給其他程序和軟件使用。

單鏈表整表刪除的算法思路如下:

  • 聲明結點p和q;
  • 將第一個結點賦值給p,下一個結點(也就是第一個結點的下一個結點)賦值給q;
  • 循環執行釋放p和(釋放完p之后)將q賦值給p的操作。(也就是說循環從這個單鏈表的頭部開始每一個都釋放調,往上接龍釋放)

ClearList.c代碼如下:

Status ClearList(LinkList *L)
{LinkList p,q;//聲明了兩個結點一個是p一個是qp=(*L)->next;//將p指向了我們L單鏈表的next也就是第一個結點while(p)//只要p不為NULL也就是不為假的情況下,也就是有數據的情況下有數據就為真(編程規定為0就是假,非0就是真){q=p->next;//指向第二個free(p);//把第一個給釋放掉p=q;//第二個就繼承了第一個的位置}(*L)->next=NULL;//最后的化這個單鏈表記得指向NULL,變成一個空表。空表就是Head指向NULL嘛,整個釋放完之后return OK;
}

把后邊代碼改一下呢?讓q沒有存在的必要呢??

free(p);
p=p->next;

上述這種寫法?因為p是一個結點,他除了有數據域還有指針域,當我們做free(p)的時候,其實是對他整個結點進行刪除和內存釋放的工作,而我們整表刪除是需要一個個結點刪除的,所以我們就需要q來記載p的下一個結點。

---------總結

從存儲分配方式、時間性能、空間性能三個方面來比較單鏈表結構與順序存儲結構優缺點:

(1)存儲分配方式:

順序存儲結構用一段連續的存儲單元依次存儲線性表的數據元素。

單鏈表采用鏈式存儲結構,用一組任意的存儲單元存放線性表的元素。(他的數據可以在內存上的任何地方,可以將邊角落的空間給串連起來,節約空間)

(2)時間性能:

查找方面:

順序存儲結構時間復雜度是O(1);(只要有下標我們就可以找到他)

單鏈表是O(n);(單鏈表沒有下標的,只有他的前驅結點才知道他的后繼結點的地址,所以要從第一個開始一個一個的往下追尋查找)

插入和刪除方面:

順序存儲結構需要平均移動表長一半的元素,時間為O(n)。

單鏈表在計算出某位置的指針后,插入和刪除時間僅為O(1)。

(3)空間性能:

順序存儲結構需要預分配存儲空間,分大了容易造成空間浪費,分小了容易發生溢出(數組的溢出)。

單鏈表不需要分配存儲空間,只要有就可以分配,元素個數也不受限制。

綜上述得出的結論:

若線性表需要頻繁查找,很少進行插入和刪除操作時 ,宜采用順序存儲結構。

若需要頻繁插入和刪除時,宜采用單鏈表結構。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的数据结构和算法:(3)3.2.2单链表的整表删除的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。