大話資料結構讀書筆記 1 線性表

2021-07-23 05:50:01 字數 2881 閱讀 2609

程式設計基礎: 資料結構 演算法

//順序儲存結構的結構**:

#define maxsize 20//儲存空間的起始分配量

typedef int elemtype;//elemtype型別根據實際型別而定,這裡假設是int

typedef structsqlist;

//順序儲存結構需要三個屬性:

//1儲存空間的起始位置:陣列data,它的儲存位置就是儲存空間的儲存位置;

//2最大儲存量:maxsize

//3線性表當前長度

在順序儲存結構中第i個資料元素ai的儲存位置與ai的儲存位置的關係

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

stattus listinsert(sqlist *l,int i,elemtype e)

l->data[i-1]=e;

l->length++;

return ok;

}

時間複雜度 o(n);

status listdlete(sqlist *l,int i,elemtype *e)

l->length--;

return ok;

}

時間複雜度o(n)

//線性表的單鏈表的鏈式儲存結構

typedef struct node//結點的定義

node;

typedof struct node *linklist;//定義單鏈表

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

if(!p||j>i)

return error;/第i個節點不存在

*e =p->data;

return ok;

}時間複雜度o(n)

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

if(!p||j>1)

return error;

s=(linklist)malloc(sizeof(node));

s->data=e;

s->next=p->next;//注意賦值 的順序,先賦值s->next然後再賦值p->next;

p->next=s;

return ok;

}

時間複雜度o(n);

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

if(!(p->next)||j>i)

return error;//第i個結點不存在

q=p->next;

p->next=q->next;

*e=q->data;//將q結點的資料給*e

free(q);

return ok;

}

時間複雜度:o(n);

頭插法:

void createlisthead(linklist *l,int n)

}尾插法

void createlisttail(linklist *l,int n)

r->next=null;//表示當前表結束

}

status clearlist(linklist *l)

(*l)->next=null;//頭結點的指標域為空

return ok;

//陣列第乙個和最後乙個元素特殊處理,不存資料,第乙個元素的cur存備用鍊錶的第乙個結點的小標,最後乙個元素的cur存第乙個有元素的下標,相當於頭結點

#define maxsize 1000

typedef struct

component,staticlinklist[maxsize];

//將一維陣列space中各分量鏈成一備用鍊錶

//space[0].cur為頭指標,「0」表示空指標

status initlist(staticlinklist space)

return error;

}

//刪除在l中的第i個元素

status listdelele(staticlinklist l,int i)

void free_ssl(staticlinklist space ,int k)

int listlength(staticlinklist l)

return j;

}

單迴圈鍊錶:將單鏈表中的終端結點的指標端由空指標改為指向頭結點,單迴圈鍊錶簡稱迴圈鍊錶

雙向鍊錶:在單鏈表的每個結點中再設定乙個指向其前驅結點的指標(雙向鍊錶也可以是迴圈鍊錶)

typedef struct dulnode

dulnode,*dullinklist;

雙向鍊錶的插入操作:

//在p和p->next之間插入結點e

s->prior=p;

s->next=p->next;

p->next->prior=s;

p->next=s;

雙向鍊錶的刪除操作:

//刪除p結點

p->prior->next=p->next;

p->next->prior=p->prior;

free(p);

線性表分為順序儲存結構和鏈式儲存結構

鏈式儲存結構又分為單鏈表,靜態鍊錶,迴圈鍊錶,雙向鍊錶

大話資料結構讀書筆記系列(三)線性表

線性表 list 零個或多個資料元素的有限序列。元素之間是有順序的,若元素存在多個,則第乙個元素無前驅,最後乙個元素無後繼,其他每個元素都有且只有乙個前驅和後繼。線性表強調是有限的 在較複雜的線性表中,乙個資料元素可以由若干個資料項組成。線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線...

大話資料結構筆記 線性表

線性表 list 零個或多個資料元素的有限序列。重點 有順序 有限 例如有乙個線性表 a,b,c,d,z則 所有線性表元素的個數n n 0 為線性表的長度,n 0時,為空表。在複雜的線性表中,乙個資料元素可以是若干個資料項組成,例如花名冊。線性表的資料儲存結構,指的是用一段位址連續的儲存單元依次儲存...

讀書筆記 大話資料結構 1

對於電腦科學,資料結構的重要性不言而喻。它對於乙個程式設計師的功力的提高起著關鍵的作用。勿在浮沙築高台,想要成為一名合格的hacker。基礎理論決定乙個程式設計師思維的深度。介於此,決定認真學習資料結構,找到比較基礎易懂的大話資料結構來開始我的學習之旅。資料結構 相互之間存在一種或多種特定關係的資料...