資料結構與演算法筆記

2021-10-19 12:23:55 字數 4673 閱讀 7014

main.c檔案

主函式檔案

#include

"seqlist.h"

/*包含的標頭檔案*/

#include

"main.h"

void

menu()

intmain()

break

;case2:

printf

("輸入要插入的元素");

while

(scanf_s

("%d"

,&item)

, item !=-1

)break

;case3:

printf

("data: ");

show_list

(&list)

;break

;case4:

printf

("插入下標和資料");

scanf_s

("%d %d"

,&index,

&item)

;insert

(&list,index,item )

;break

;case5:

printf

("尾部刪除成功...");

pop_back

(&list)

;break

;case6:

printf

("頭部刪除成功...");

pop_front

(&list)

;break

;case7:

printf

("請輸入要刪除的下標...");

scanf_s

("%d"

,&index)

;erace_pos

(&list,index)

;printf

("刪除指定下標成功...");

break

;case8:

printf

("請輸入要刪除的元素...");

scanf_s

("%d"

,&item)

; erace_val (

&list,item)

;break

;case9:

printf

("請輸入要查詢的元素...");

scanf_s

("%d"

,&item)

;int ret=

find

(&list,item);if

(ret ==-1

)else

break

;case10:

printf

("%d"

,size

(&list));

break

;case11:

sort

(&list)

;break

;case12:

reverse

(&list)

;break

;case13:

clear

(&list)

;break

;case14:

return0;

break

;case15:

system

("cls");

menu()

;break;}

}return0;

}

函式實現檔案 seqlist.c
#include

"seqlist.h"

void

inilist

(seqlist* list)

void

push_back

(seqlist* list, data data)

list->base[list->size]

= data;

list->size++;}

void

show_list

(seqlist* list)

printf

("\n");

}void

push_front

(seqlist* list, data data)

for(

int i = list->size; i >

0; i--

) list->base[0]

= data;

list->size++;}

void

insert

(seqlist* list,

int index, data data)

for(

int i = list->size; i > index; i--

) list->base[index]

= data;

list->size++;}

void

pop_back

(seqlist* list)

list->size--;}

void

pop_front

(seqlist* list)

for(

int i =

0; i < list->size-

1; i++

) list->size--;}

void

erace_pos

(seqlist* list,

int pos)

for(

int i = pos; i < list->size -

1; i++

) list->size--;}

void

erace_val

(seqlist* list,

int val)

int ret =

find

(list, val);if

(ret !=-1

) list->size--;}

}int

find

(seqlist* list,

int val)

}return-1

;}intsize

(seqlist* list)

void

sort

(seqlist* list)}}

}void

reverse

(seqlist* list)

}void

clear

(seqlist* list)

bool inc

(seqlist* list)

//擴充儲存的函式

list->capacity +

= inc_size;

return true;

}

函式檔案 seqlist.h
#ifndef _seqlist_                         

//如果沒有_seqlist_就結束,以防外一

#define _seqlist_

#define init_seqlist_size 8

//最大儲存暫定為8

#define inc_size 3

//每次擴充記憶體的大小

#include

#include

#include

#include

//bool型別函式

typedef

int data;

//抽象資料型別

typedef

struct

seqlist;

bool inc

(seqlist* list)

;//擴容函式

void

inilist

(seqlist* list)

;void

push_back

(seqlist* list, data data)

;void

show_list

(seqlist* list)

;void

push_front

(seqlist* list, data data)

;void

insert

(seqlist* list,

int index, data data)

;void

pop_back

(seqlist* list)

;void

pop_front

(seqlist* list)

;void

erace_pos

(seqlist* list,

int pos)

;void

erace_val

(seqlist* list,

int pos)

;int

find

(seqlist* list,

int val)

;int

size

(seqlist* list)

;void

sort

(seqlist* list)

;void

reverse

(seqlist* list)

;void clear (seqlist* list)

;#endif

ps:稍加改進可用作 ***x類管理系統

資料結構與演算法 筆記 資料結構與演算法筆記 棧

以前學習的時候都沒怎麼好好的做過筆記,總是東記一點,西寫一點,甚至都不做筆記,導致後面找的時候找不到,最後還是求助搜尋引擎浪費掉很多時間。好腦筋不如個爛筆頭呀。這次又重新學習python的資料結構及演算法 中國mooc上的公開課 就好好做個筆記吧。棧是一種只能在一端進行插入和刪除的線性資料結構。一般...

演算法與資料結構筆記三

摘錄from 大話資料結構 1.樹 樹的度 結點擁有的子樹數成為結點的度 degree 度為0的結點成為葉節點 leaf 或終端結點。樹的深度或高度 結點的層次level,從根節點開始,根為第一層,根的孩子為第二層。樹中最大層次稱為樹的深度 depth 或高度,當前樹的深度為4.樹的儲存 樹儲存當然...

資料結構與演算法筆記 緒論

計算機的本質是計算,計算是尋找物件的規律,並從中找到技巧。計算的目標是高效,低耗。演算法就是借助一定的工具,在一定的規則下,以明確而機械的形式來進行的計算。演算法的主要特性 乙個好的程式不僅要考慮資料結構與演算法,還要考慮效率,即 資料結構 演算法 效率 程式 應用。演算法分析的兩個重要指標 定義 ...