資料結構必會演算法

2021-10-02 11:15:09 字數 2205 閱讀 3992

2.2順序表插入

//順序表儲存結構

#define maxsize 100

typedef structlist;

#define ok 1

#define error 0

//在順序表l中第i個資料元素之前插入乙個元素e。

//i的合法取值範圍1<=i<=last+2

int inslist(list *l,int i,type e)

//判斷是否能夠插入

//最後乙個元素已經是 maxsiaze-1

if(l->last>=maxsiaze-1)

//為插入元素移動位置 i-1把i-1的元素移走

for(k=l->last;k>=i-1;k--)

l->elem[i-1]=e;//第i個資料元素之前插入乙個元素e

l->last++;//修改尾指標

return ok:

}2.3順序表刪除

#define ok 1

#define error 0

//在順序表l中刪除第i個資料元素,並用指標引數e返回其值。

//i的合法取值範圍1<=i<=last+1

int inslist(list *l,int i,type e)

*e =l->elem[i-1];//將刪除元素放入指標e帶出

//為插入元素移動位置 i-1把i-1的元素移走

for(k=i;i<=l->last;k--)//last最後乙個元素的下標

l->last--;//修改尾指標

return ok:

}//單鏈表的儲存結構

//node結點型別定義

typedef struct nodenode,*list; //*list結構指標型別

//初始化單鏈表

initlist(list *l)

頭插法建立單鏈表

void creatfromhead(list l)

else flag=0; }}

尾插法建立單鏈表

void creatfromtail(list l)

else }}

單鏈表的插入

int insert(list l,int i,type e)

while(pre!=null&&knext;

k=k+1;

} if(pre==null)

s->data=e;

s->next=pre->next;

pre->next=s;

return ok:

}單鏈表刪除

int dellist(list l,int i,type *e)

if(pre->next==null||i<1)

s=pre->next;

pre->next=s->next;

*e=s->data;

free(s);

return ok:

}//順序棧儲存結構

#define stack_size 50

typedef structstack;

//順序棧初始化

void initstack(stack *s)

//順序進棧

int push(stack *s,type x)

//順序棧出棧

int pop(stack *s,type *x)

//鏈棧儲存結構

typedef struct nodenode,*list;

//鏈棧進棧

void initlist(list l)

int push(list *l,type x)

//鏈棧出棧

int pop(list l,type *x)

查詢//折半查詢法 二分查詢

//順序結構資料定義

#define size 20

typedef structrecordtype;

typedef structlist;

int binsrch(list l,type k)

}//氣泡排序

void intsort(recordtype r,int length)

}//每趟排序都把最大的數放在最後n-i

} }//選擇排序

void selectsort(recordtype r,int n)

}}

資料結構 資料結構演算法

分治法 對於乙個規模為n的問題,若該問題可以容易地解決 比如說規模n較小 則直接解決 否則將其分解為k個規模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞迴地解這些子問題,然後將各子問題的解合併得到原問題的解。動態規劃法 這種演算法也用到了分治思想,它的做法是將問題例項分解為更小的 相似的子...

資料結構與演算法 演算法 演算法和資料結構

資料結構與演算法 演算法 好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您一開始或至少在我的情況下,並且我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟...

資料結構 演算法

程式設計 資料結構 演算法 演算法的定義 演算法是解決特定問題求解步驟的描述,在計算機中為指令的有限序列,並且每條指令表示乙個或多個操作。演算法的特性 輸入 輸出 0個或多個輸入,至少乙個輸出,輸出可以是列印輸出或者返回乙個值 有 窮 性 演算法在執行有限步驟後,自動結束而不會出現無限迴圈,並且每乙...