數據結構之線性表

線性表 : 由零個或多個數據元素組成的有限序列;

特點 :

     是一個序列,也就是說元素之間存在先後順序;

     若存在多個元素,則第一個元素無前驅,最後一個元素無後繼,其他元素都有且只有一個前驅和後繼;

     線性表強調 有限的;

 

數學定義 : 若將線性表記爲(a1,....ai-1,ai,ai+1,..an);則表中ai-1領先於ai,ai領先於ai+1,稱ai-1是ai的直接前驅元素,ai+1是ai的直接後繼元素;

所以線性表的個數n(n>=0)定義爲線性表的長度,當n=0時,稱爲空表;

 

數據類型 : 指一組性質相同的值的集合及定義在此集合上的一些操作的總稱;;  例; 浮點型,整形;

在c語言中,按照取值的不同,數據結構分爲2類 :

  原子類型  : 不可以再分解的基本類型;整形,浮點型;

 結構類型 : 由若干個類型組合而成,是可以再分解的;例整形數組可以分解若干個整形;

 

抽象 : 是指抽取出事物具有的普遍性的本質;它要求抽取出問題的特徵

抽象數據類型adt : 是指一個數據模型及定義在該模型上的一組操作;

 

線性表的順序存儲結構  : 指用一段地址連續的存儲單元依次存儲線性表的數據元素;

線性表的順序存儲結構,在存,讀數據時,不管在哪兒位置,時間複雜度都是O(1);而在插入或者刪除時,時間複雜度都是O(n);

優點  :

     無須爲表示表中元素之間的邏輯關係而增加額外的存儲空間;

     可以快速的存取表中的任意位置的元素;

缺點 :

    插入和刪除操作需要移動大量的元素;

    當線性表長度變化較大時,難以確定存儲空間的容量;

    容易造成存儲空間的"碎片";

線性表的鏈式存儲結構 特點 : 用一組任意的單元存儲線性表的數據元素,這組存儲單元可以存在內存中未被佔用的任意位置;

   把存儲數據元素信息的域稱爲數據域;把存儲直接後繼位置的域稱爲指針域;

   指針域中存儲的信息稱爲指針或鏈;這兩部分信息組成數據元素稱爲存儲映像,稱爲節點;

 

每個節點中只包含一個指針域,稱爲單鏈表;

 

頭結點的數據域不存儲任何信息,

頭指針 : 指鏈表指向第一個節點的指針,若鏈表有頭結點,則是指向頭結點的指針;

頭指針具有標識作用,常用頭指針冠以鏈表的名稱 ;(指針變量的名字)

無論鏈表是否爲空,頭指針均不爲空;

頭指針是鏈表的必要元素

 

頭結點 : 爲了操作的統一和方便而設立的,放在第一個元素的節點之前,其數據一般無意義(也可以用來存放鏈表的長度)

 

 獲取鏈表第i個數據的算法思路 :

     聲明一個節點p指向鏈表第一個節點,初始化j從1開始;

    當j< i時,就遍歷鏈表,讓p的指針向後移動,不斷指向下一個節點,j+1;

     若到鏈表末尾p爲空,則說明第i個元素不存在; 否則查找成功,返回節點p的數據;

   

 

 

 

 

 

 

 

 

發佈了63 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章