資料結構01 時間複雜度及線性表的各功能原始碼

2021-09-25 15:13:13 字數 2596 閱讀 2614

輸入、輸出:有窮,確定,可行

以最高端 去除其餘加項,去除係數

//物件:線性表內容

initlist(*l)://建立空線性表l,並進行初始化

clearlist(*l)://清空線性表

listdelete(*l,i,*e)://刪除線性表l第i個元素,並將此元素賦值給e

//需要進行賦值,所以(*e)指向內容

//物件:線性表指標

listempty(l)://判斷線性表l是否為空表,空則返回true,否則返回false

listlength(l)://返回線性表元素個數

getelem(l,i,*e)://把線性表l中第i個元素值賦值給e

//需要進行賦值,所以(*e)指向內容

tips:對線性表進行資料操作的,則操作物件都為指標l指向的內容(*l)

若只是查詢等,不對資料進行改動的,則操作物件都為指標l

//實現順序表的建立、初始化、插入、刪除、修改、普通合併、有序合併

#include

#include

#include

using namespace std;

#define ok 1

#define error 0

#define overflow -2

#define list_init_size 100

#define listincrement 10

typedef

int elemtype;

elemtype *newbase;

//順序表結構描述

typedef

struct

sqlist;

//順序表初始化

intinitsqlist

(sqlist &l)

//建立順序表

void

creatsqlist

(sqlist &l)

}//順序表的顯示

void

showsqlist

(sqlist &l)

//順序表的插入

intinsertsqlist

(sqlist &l,

int pos,elemtype elem)

if(l.length>=l.listsize)

for(

int i=l.length-

1;i>=pos-

1;i--

) l.elem[pos-1]

=elem;

l.length++

;//表長加1

return ok;

}//順序表的刪除

intdeletesqlist

(sqlist &l,

int pos)

for(

int i=pos-

1;i) l.length--

;//表長減1

return ok;

}//修改順序表

intupdatesqlist

(sqlist &l,

int pos,elemtype elem)

l.elem[pos-1]

=elem;

return0;

}//順序表的合併

void

combinesqlist

(sqlist &la,sqlist &lb)

if(cout==0)

la.elem[la.length++

]=lb.elem[i];}

}//順序表的有序合併,有序合併的前提,兩個順序表已經排序好的

void

combinesq

(sqlist &la,sqlist &lb,sqlist &lc)

while

(pa<=pa_last)

*pc++

=*pa++

;//把剩下的逐一插入

while

(pb<=pb_last)

*pc++

=*pb++;}

intmain()

switch

(num)

case2:

case3:

case4:

combinesqlist

(l,lb)

; cout<<

"合併後:"

;showsqlist

(l);

break;}

case5:

combinesq

(l,lb,lc)

; cout<<

"合併後:"

;showsqlist

(lc)

;break;}

}return0;

}

資料結構01 時間複雜度和空間複雜度

什麼是時間複雜度?什麼是空間複雜度?遞迴斐波那契數列優化,尾遞迴優化 迴圈優化 常見時間複雜度 演算法就是計算或解決問題的步驟,用來將輸入資料轉化成輸出結果。演算法效率分析分為兩種 第一種是時間效率,第二種是空間效率。時間效率被稱為時間複雜度,而空間效率被稱作空間複雜度。時間複雜度主要衡量的是乙個演...

01 時間複雜度 空間複雜度

1 時間頻度 乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t n n稱為問題的規模,當n不斷變化時,時間頻度t n 也會不斷變化。2 時間複雜度 若有某個輔助函式f n 使得當n趨近於無窮大時,t n f n 的極限值為不等於零的常數,則稱f n 是t n 的同數量級函式。記作t n f ...

演算法01 時間複雜度

演算法,通俗來說,就是被設計出來用於解決某個或某類問題,具有一定通用性的計算流程和方法。解決某個問題,通常有不止一種演算法。評價乙個演算法的優劣,從3個方面進行考察 時間複雜度 額外空間複雜度 常數項時間 通常用最壞時間複雜度 大寫o 來表示乙個演算法的時間複雜度。通常估計乙個演算法的時間複雜度是這...