資料結構 第二天 線性表(一)

2021-09-11 17:34:30 字數 2794 閱讀 2236

線性表:0個或多個資料元素的有限序列,記

長度為n,為0記為空表

線性表應該具有的操作:

adt list

data

,每個元素型別為datatype,除第乙個元素外,每乙個元素有且只有乙個直接前驅元素,除最後乙個元素外有且只有乙個直接後繼元素。

operation

initlist(*l);    初始化操作,建立乙個空的線性表l

listempty(l);    若線性表為空,返回true,否則返回false

clearlist(*l);    將線性表清空

getelem(l,i,*e);    將線性表l中的第i個位置元素返回給e

listdelete(*l,i,*e);    刪除線性表中第i個位置元素,並用e返回其值

listlength(l);    返回線性表l的元素個數

endadt 

用一段位址連續的儲存單元依次儲存線性表的資料元素

在c/c++中表示為陣列

*注意區分陣列長度與線性表長度,前者指開闢的儲存空間的大小,基本不變;後者指表中元素資料的個數,隨著插入和刪除是不斷變化的。

主要優點:可快速訪問表中任意位置的元素

主要缺點:插入和刪除需要移動大量的元素

節點 = 資料域+指標域

若節點只包含乙個指標域,即只知後者,則叫做單鏈表

頭結點:在第乙個儲存資料的節點之前設定乙個頭結點,用於儲存長度等附加資訊,但是並不是必須的;

頭指標:指向鍊錶中第乙個節點的儲存位置,若有頭結點,則指向頭結點,若無頭結點,則指向第乙個資料節點,該指標是必須的;

最後乙個節點的指標域指向空。

*分辨頭節點頭指標第乙個資料節點最後乙個資料節點(筆者自己稱為尾節點)以及尾指標等概念;

節點構造:

typedef struct node

node;

typedef struct node *linklist;

元素讀取(讀取第i個元素資料):

status getelem(linklist l,int i,elemtype *e)

if(!p||j>i)

return error; //返回錯誤,即第i個資料不存在

*e = p->data; //給e賦值

return ok;

}

單鏈表插入(插入到第i個資料之前)

status listinsert(linklist *l,int i,elemtype e)

//上述while結束,此時p指向第i-1個節點

if(!p||j>i) //沒有第i個節點

return error;

s = (linklist)malloc(sizeof(node)); //動態生成新節點

s->data = e; //插入節點資料部分賦值

s-next = p->next; //插入節點指標部分指向第i個節點

p->next = s; //第i-1節點指標部分指向插入節點s

return ok;

}

單鏈表刪除(刪除第i個資料)

status listinsert(linklist *l,int i,elemtype *e)

//上述while結束,此時p指向第i-1個節點

if(!p||j>i) //沒有第i個節點

return error;

q = p->next; //q記錄第i個節點

p->next = q->next; //將p節點(第i-1)的指標部分指向第i+1個節點

*e = q->data; //將第i個節點的資料給e

free(q); //釋放q節點占用的記憶體

return ok;

}

整表建立(頭插入)

void creatlisthead(linklist *l,int n)

}

整表建立(尾插入)

void creatlisthead(linklist *l,int n)

r->next = null; //鍊錶結束,尾部指向空

}

整表刪除

status clearlist(linklist *l)

(*l) -> next = null; //頭節點指標指向空

return ok;

}

單鏈表與順序儲存結構比較

主要優勢:插入與刪除更方便;不需要固定分配空間,元素個數也不受限制。

主要缺點:查詢的複雜度增加到了o(n)。

資料結構複習第二天(線性表)

線性表 list 具有相同資料型別零個或多個資料元素的有限序列。除第乙個元素外,每個元素有且僅有乙個直接前驅。除最後乙個元素外,每個元素有且僅有乙個直接後繼。線性表是一種邏輯結構,表示元素之間一對一的相鄰關係。順序表和煉表是指儲存結構,兩者屬於不同層面的概念,因此不要將其混淆。initlist l ...

資料結構第二天

學習資料結構第二天,有點學習心得,所以記錄一下。目前才接觸線性結構的順序表和單鏈表的 說說它們的異同吧。毫無疑問,順序表和單鏈表的共同點就是線性,即元素呈線性排列,單一前繼和單一後繼。並且表示形式都使用打頭的元素位址,有點順藤摸瓜的感覺。不同點就是順序表的物理結構也是順序的,實際上就是位址 而已,好...

考研第二天 線性代數

一 線性代數 one 行列式按行 列 展開 術語 余子式 代數余子式 引理 如果乙個行列式的第i行只有第j列元素aij不為0,其他元素都為 那麼該行列式等於aij與第 i,j 元的代數余子式之積。定理 行列式等於任意一行或一列每個元素與其對應代數余子式乘積之和。該定理叫做行列式按行 列 展開法則。定...