1.順序儲存結構不足的解決辦法
所有的元素都不要考慮相鄰位置,哪有空位就到**,而只是讓每個元素知道它下乙個元素的位
置在**,這樣,我們可以在第乙個元素時,就知道第二個元素的位置(記憶體位址),
而找到它;在第二個元素時,再找到第三個元素的位置(記憶體位址)。這樣所有的元素 我們就都可以通過遍歷而找到。
2.線性表的鏈式儲存結構的特點是什麼?
線性表的鏈式儲存結構的特點是用一組任意的儲存單元儲存線性表的資料元素,這組儲存單元可以是連續的,也可以是不連續的。這就意味著,這些資料元素可以存在記憶體未被占用的任意位置
3.:頭指標與頭結點的異同是什麼?
頭指標:頭指標是指鍊錶指向第乙個結點的指標,若煉表有頭結點,
則是指向頭結點的指標
頭指標具有標識作用,所以常用頭指標冠以鍊錶的名字
無論鍊錶是否為空,頭指標均不為空。頭指標是鍊錶的必要元素
頭結點:頭結點是為了操作的統一和方便而設立的,放在第一元素的結點之前,其資料域一般無意義(也可存放鍊錶的長度)
有了頭結點,對在第一元素結點前插入結點和刪除第一結點,其操作與其它結點的操作就統一了
頭結點不一定是鍊錶必須要素
4.:獲得鍊錶第i個資料的演算法思路
宣告乙個結點p指向鍊錶第乙個結點,初始化j從1開始;
當j累加1;
若到鍊錶末尾p為空,則說明第i個元素不存在;
否則查詢成功,返回結點p的資料。
5.:單鏈表第i個資料插入結點的演算法思路
宣告一結點p指向鍊錶第乙個結點,初始化j從1開始;
當j累加1;
若到鍊錶末尾p為空,則說明第i個元素不存在;
否則查詢成功,在系統中生成乙個空結點s;
將資料元素e賦值給s->data;
單鏈表的插入標準語句s->next=p->next; p->next=s;
返回成功。
6.:單鏈表第i個資料刪除結點的演算法思路
宣告一結點p指向鍊錶第乙個結點,初始化j從1開始;
當j累加 1;
若到鍊錶末尾p為空,則說明第i個元素不存在;
否則查詢成功,將欲刪除的結點p->next賦值給q;
單鏈表的刪除標準語句p->next=q->next;
將q結點中的資料賦值給e,作為返回;
釋放q結點;
返回成功。
7.:單鏈表整表建立的演算法思路
宣告一結點p和計數器變數i;
初始化一空鍊錶l;
讓l的頭結點的指標指向null,即建立乙個帶頭結點的單鏈表;
迴圈:生成一新結點賦值給p;
隨機生成一數字賦值給p的資料域p->data;
將p插入到頭結點與前一新結點之間。
8.:單鏈表整表刪除的演算法思路
宣告一結點p和q;
將第乙個結點賦值給p;
迴圈:將下一結點賦值給q;
釋放p;
將q賦值給p。
9.:在迴圈體內直接寫free (p) ;p=p->next;會帶來什麼問題?
要知道p是乙個結點,它除了有資料域,還有指標域。你在做free (p);時,其實是在對它整個結點進行刪除和記憶體釋放的工作。
10.:簡單地對單鏈表結構和順序儲存結構做對比
儲存分配方式:順序儲存結構用一段連續的儲存單元依次儲存線性表的資料元素
單鏈表採用鏈式儲存結構,用一組任意的儲存單元存放線性表的元素
時間效能:
查詢:順序儲存結構0(1)
單鏈表0(n)
插入和刪除:
順序儲存結構需要平均移動表長一半的元素,時間為0(n)
空間效能:順序儲存結構需要預分配儲存空間,分大了,浪費,分小了易發生上溢
單鏈表不需要分配儲存空間,只要有就可以分配,元素個數也不受限制
C語言 資料結構 棧相關問題
二進位制轉換為十進位制 include include include define ok 1 define error 0 define stack init size 20 define stackincrement 10 typedef char selemtype typedef int s...
C語言 資料結構 遞迴相關問題
遞迴 int bina search int str,int key,int low,int high if str mid key if str mid key if str mid key include intbina search int str,int key,int low,int hi...
資料結構相關術語
資料 data 所有能被計算機識別的符號集合。資料元素 data element 是資料結構中的乙個個個體,是資料結構中討論的基本單位。資料項 資料結構討論的最小單位,資料元素可以是資料項的集合,例如 日期由年月日組成。資料物件 data object 是具有相同性質的資料元素的集合,是資料的乙個子...