資料結構與演算法第二章 線性表

2021-09-25 20:29:28 字數 3192 閱讀 2087

第二章線性表

線索cues

筆記notes

2.1線性結構特點

1、乙個首乙個尾

2、除首尾外其他結點只有乙個直接前驅和乙個直接後繼。

線性結構包括線性表、堆疊、佇列、字串、陣列,最常用的是線性表。

2.2案例引入

一元多項式的運算

稀疏多項式的運算

線性表p=((p1,e1),(p2,e2),…,(pm,em))

2.3線性表的儲存型別與操作定義

線性表的儲存結構

2.4線性表順序儲存的實現

用一組位址連續的儲存單元依次儲存線性表的元素,可通過陣列v[n]來實現。

線性表的重要的基本操作

初始化、銷毀、清空、求長,判斷是否為空

初始化線性表l

方法一

status initlist(sqlist&l)
方法二

status initlist_sq(sqlist *l)
刪除線性表

void destroylist(sqlist &l)
清空線性表l

void clearlist(sqlist)

求線性表的長度

int getlength(sqlist l)

判斷線性表l是否為空

int isempty(sqlist l)

獲取線性表l中的某個資料元素的內容

int getelem(sqlist l,int i,elemtype &e)

int locateelem(sqlist l,elemtype e)
status listdelete_sq(sqlist &l,int i) lnode,*linklist;
單鏈表

(1)初始化

1、生成新結點作頭結點,用頭結點l指向頭結點

2、頭結點的指標域置空

status initlist_l(linklist&l)
銷毀

status destroylist_l(linklist&l)

return 0;

}

清空

status clearlist(linklist &l)

l->next=null;

return ok;

}

求表長

int listlength_l(linklist l)

return i;

}

判斷表是否為空

int listempty(linklist l)

取值

status getelem_l(linklist l,int i,elemtype &e)

if(!p || j>i ) return error; //第i個元素不存在

e=p-data;   //取第i個元素

return ok;

}

查詢

lnode *locateelem_l(linklist l, elemtype e)  //定義上帶*號

//返回位址序號

int locateelem_l(linklist l,elemtype e)

if(p) return j;

else return 0;

}

插入

//在第i個元素之前插入

status listinsert_l(linklist &l,int i,elemtype)

if(!p || j>i-1)  return error;

s=new lnode;

s->date=e;

s->next=p->next;

p-next=s;

return ok:

}

刪除

status listdelete_l(linklist &l,int i;elemtype  &e)

if(!(p->next) || j>j-1) return error;//

q=p->next;

p->next=q->next;

e=q->data;

delete q;

return ok;

}

單鏈表的建立(前插法)

void createlist_f(linklist&l,int n)

}

單鏈表的建立(尾插法)

void createlist_l(linklist &l, int n)

}

雙向鍊錶

typedef struct dulnodedulnode,*dulinklist
插入

status listinsert_dul(dulinklist &l,int i,elemtype e)
2.6順序表和煉表的區別

查詢元素順序表的時間複雜度o(1),鍊錶的時間複雜度為o(n)

插入刪除順序表的 時間複雜度為o(n),鍊錶的時間複雜度為o(1)

2.7線性表的合併

void union(list &la,list lb)

}

有序表的合併

void union(list &la,list lb)

}

有序鍊錶的合併(允許有重複)

void mergelist_l(linklist &la,linklist &lb,linklist &lc)

else

pc->next=pa?pa:pb;

deleta lb;

}}

總結summary

資料結構 第二章 線性表

線性表 是具有相同型別的n n 0 個元素的有限序列,其中n為表長,當n 0時,該錶為空表。線性表的特點 線性表的九種基本操作 initlist l 初始化表。構造乙個空的線性表。destroylist l 銷毀操作。銷毀線性表,並釋放線性表l所占用的記憶體空間。locateelem l,e 按值查...

資料結構 第二章 線性表

線性表 順序儲存 鏈式儲存 順序表單鍊錶 雙鏈表迴圈鍊錶 靜態鍊錶 陣列指標實現 借助陣列實現 定義 線性表是具有相同資料型別的n n 0 個資料元素的有限序列,其中n為表長,當n 0時該線性表是乙個空表。特點 1 個數有限 2 表中元素具有邏輯上的順序性。3 表中元素都是資料元素,每個元素都是單個...

資料結構 第二章 線性表

資料結構 第二章 線性表 模板 引數化的多型 引數化多型性 講程式所處理的物件型別引數化,使一段 可用於處理多種不同型別的物件 採用模板程式設計 提供 共享機制 邏輯功能相同,資料型別不同 定義格式 template 尖括號內又稱模板形參表 返回值型別 函式名 參數列 如果變數被引數化,則返回值型別...