單鏈表 順序儲存

2021-10-08 19:01:43 字數 3122 閱讀 6831

#define maxsize 20	

//儲存空間初始分配量

typedef

int elemtype;

//elemtype型別根據實際情況而定,這裡假設為int

typedef

struct

sqlist;

對於第i個資料元素ai的儲存位置可以由a1推算得出:

*loc(ai)=loc(a1)+(i-1)c;

通過這個公式可以隨時算出線性表中任意位置的位址,不管是第乙個還是最後乙個,都是相同的時間。那麼我們對每個線性表位置的存入或者取出資料,對於計算機來說都是相等的時間,也就是乙個常數,因此用我們演算法中學到的時間複雜度的概念來說,它的訪問時間效能為o(1)。我們通常把具有這一特點的儲存結構成為隨機訪問結構

#define ok 1

#define error 0

#define true 1

#define false 0

typedef

int status;

/* status是函式的型別,其值是函式結果狀態**,如ok等 */

/* 初始條件:順序線性表l已存在,1<=listlength(l) */

/* 操作結果:用e返回l中第i個資料元素的值 */

status getelem

(sqlist l,

int i,elemtype *e)

思路:

/* 初始條件:順序線性表l已存在,1<=i<=listlength(l) */

/* 操作結果:在l中第i個位置之前插入新的資料元素e,l的長度加1 */

status listinsert

(sqlist *l,

int i, elemtype e)

l->data[i-1]

= e;

//將新元素插入

l->length++

;return ok;

}

思路:

/* 初始條件:順序線性表l已存在,1<=i<=listlength(l) */

/* 操作結果:刪除l的第i個資料元素,並用e返回其值,l的長度減1 */

status listdelete

(sqlist *l,

int i, elemtype *e)

l->length--

;return ok;

}

#include

#define maxsize 20

//儲存空間初始分配量

#define error 0

#define true 1

#define false 0

typedef

int status;

typedef

int elemtype;

//elemtype型別根據實際情況而定,這裡假設為int

//結構體---單鏈表順序儲存

typedef

struct

sqlist;

//指標方式獲取元素

//status getelem(sqlist* list, int i, elemtype* e)else if(i > list->length)else

//}//獲取元素

status getelem

(sqlist list,

int i, elemtype* e)

else

if(i > list.length)

else

}//插入

status insertelem

(sqlist* list,

int i, elemtype e)

else

if(i>list->length+1)

else

list->data[i-1]

= e;

list->length++

;printf

("當前list長度:%d\n"

,list->length)

;return true;}}

//刪除

status deleteelem

(sqlist* list,

int i)

else

if(i>list->length)

else

list->length--

;return true;}}

//主函式

intmain()

sqlist.length = initnum;

for(i=

0;i)//初始化檢測

printf

("鍊錶的第%d個資料是:%d\n"

,i+1

,sqlist.data[i]);

printf

("初始化完成!\n");

while

(continueflag)

break

;case3:

//刪除

printf

("------------刪除-----------\n");

printf

("輸入要刪除的位置:\n");

scanf

("%d"

,&deletesize);if

(deleteelem

(list, deletesize)

== true)

}break

;case4:

continueflag = false;

printf

("感謝使用!");

break

;default

:printf

("功能號不存在,請重新輸入!\n");

再窺 單鏈表和順序儲存

先接一下上次的筆記,實現對單鏈表進行刪除 宣告結點p和q 首節點賦值給p,下乙個結點賦值給q 迴圈執行釋放p,將q賦值給p的操作 刪除第乙個結點後,之後的結點就是首節點了,以此類推 string clearlist node l l next null 成為了空表 return clear dele...

再窺 單鏈表和順序儲存

先接一下上次的筆記,實現對單鏈表進行刪除 宣告結點p和q 首節點賦值給p,下乙個結點賦值給q 迴圈執行釋放p,將q賦值給p的操作 刪除第乙個結點後,之後的結點就是首節點了,以此類推 string clearlist node l l next null 成為了空表 return clear dele...

再窺 單鏈表和順序儲存

先接一下上次的筆記,實現對單鏈表進行刪除 宣告結點p和q 首節點賦值給p,下乙個結點賦值給q 迴圈執行釋放p,將q賦值給p的操作 刪除第乙個結點後,之後的結點就是首節點了,以此類推 string clearlist node l l next null 成為了空表 return clear dele...