資料結構 增刪改查(靜態順序表 動態順序表)

2021-08-20 20:48:57 字數 3926 閱讀 1987

靜態順序表實現增刪改查的所有**~

#pragma once

#include #include #include #include typedef int datatype;

#define max_size (100)

typedef struct seqlist seqlist;

// 初始化

void seqlistinit(seqlist *psl)

// 銷毀

void seqlistdestroy(seqlist *psl)

// 尾插

void seqlistpushback(seqlist *psl, datatype data)

// 頭插

void seqlistpushfront(seqlist *psl, datatype data)

#endif

#if 0

// 1.2 以要搬到的位置做迴圈的指示

int space;

for (space = psl->size; space > 0; space--)

#endif

#if 3

// 2. 以迴圈次數做指示

int i;

for (i = 0; i < psl->size; i++)

#endif

psl->array[0] = data;

psl->size++;

}// 根據下標插入

void seqlistinsert(seqlist *psl, int pos, datatype data)

psl->array[pos] = data;

psl->size++;

}// 尾刪

void seqlistpopback(seqlist *psl)

// 頭刪

void seqlistpopfront(seqlist *psl)

psl->size--;

}// 根據下標刪除

void seqlisterase(seqlist *psl, int pos)

#endif

#if 1

// 以 要搬運的資料下標作為循#環指示

int p; // 要搬運的資料下標

for (p = pos + 1; p < psl->size; p++)

#endif

psl->size--;

}// 根據資料刪除,只刪除遇到的第乙個

void seqlistremove(seqlist *psl, datatype data)

}// 根據資料刪除,刪除所有遇到的

void seqlistremoveall(seqlist *psl, datatype data)

seqlisterase(psl, pos);

}#endif

while ((pos = seqlistfind(psl, data)) != -1)

/* while (size)

} */

#endif

#if 0

datatype *newarray = (datatype *)malloc(sizeof(datatype)* psl->size);

assert(newarray);

int i, j, k;

for (i = 0, j = 0; i < psl->size; i++)

} psl->size = j;

// 把資料從 newarray 放回到 array

for (k = 0; k < psl->size; k++)

free(newarray);

#endif

int i, j;

for (i = 0, j = 0; i < psl->size; i++)

} psl->size = j;

}// 根據下標更新

void seqlistupdate(seqlist *psl, int pos, datatype data)

// 查詢

// 返回遇到的第乙個下標,如果沒有遇到,返回 -1

int seqlistfind(seqlist *psl, datatype data)

} // 沒找到

return -1;

}void swap(datatype *a, datatype *b)

void selectop(seqlist *psl)

if (psl->array[i] > psl->array[maxindex])

} // 到這裡後,minindex 就是找到的最小數的下標

// 到這裡後,maxindex 就是找到的最大數的下標

swap(psl->array + minindex, psl->array + minspace);

if (minspace == maxindex)

swap(psl->array + maxindex, psl->array + maxspace);

minspace++;

maxspace--; }}

void seqlistprint(seqlist *psl)

printf("\n");

}void testseqlist()

動態順序增刪改查的所有**~

#pragma once

#include #include #include #define capacity (2)

typedef int datatype;

typedef struct seqlistdynamic seqlistd;

//初始化

void seqlistdinit(seqlistd *psld)

//銷毀

void seqlistddestroy(seqlistd * psld)

void expandifrequired(seqlistd *psld)

//肯定空間不夠

//1.容量變大

//2.開闢空間

//3.將老資料寫進新空間

//4.釋放老空間

//5.將新空間掛起

//realloc

//夥伴演算法

psld->capacity *= 2;

datatype *newarray = (datatype *)malloc(sizeof(datatype)*psld->capacity);

int i;

for (i = 0; i < psld->size; i++)

free(psld->array);

psld->array = newarray;

}void seqlistdpushback(seqlistd *psld, datatype data)

//頭插

void seqlistdpushfront(seqlistd *psld, datatype data)

psld->array[space]= data;

psld->size++;

}void charu(seqlistd *psld, int pos, datatype data)

psld->array[pos] = data;

psld->size++;

}//按下標插

void seqlistdinsert(seqlistd *psld,int pos, datatype data)

psld->array[pos]=data;

psld->size++;*/

}//列印

void seqlistdprint(seqlistd *psld)

}void testseqlistd()

動態順序表的增刪改查

順序表還是相對於比較簡單的資料結構,所謂動態,不過是在初始化時 賦予動態空間,所以說,就直接看 了。標頭檔案 pragma once sequence list define crt secure no warnings 1 include include include include typed...

資料結構 動態順序表增刪查改實現

一 概念及機構 順序變是一種線性表,首先介紹線性表的概念 線性表 線性表 linear list 是n個具有相同特性的資料元素的有限序列。線性表是一種在實際中廣泛使用的資料結構常見的線性表 順序表 鍊錶 棧 佇列 字串 線性表在邏輯上是線性結構,也就說是連續的一條直線。但是在物理結構上並不一定是連續...

資料結構 順序表 增刪查改

include include include include list.h 函式名 createlist 函式功能 建立線性表 引數 無 list createlist void return plist 函式名 destroylist 函式功能 銷毀線性表 函式返回值 無。void destro...