資料結構 實現基於靜態陣列的順序表的基本操作

2021-08-13 08:17:20 字數 3001 閱讀 1392

實現基於靜態陣列的順序表的以下基本操作:

首先先定義乙個結構體型別seqlist( arr【】,size(有效的元素個數)),預定義乙個陣列的最大長度,將整型資料變數typedef為datatype,為了以後在插入刪除別的型別時方便修改

初始化 void initseq(seqlist *s)

將陣列的size置為0,不需要給每個元素進行賦值,

尾插 void seqlistpushback(seqlist *s,datatype data)

首先要判斷是否為空陣列,並且是否有空餘位置插入,將陣列的size+1,把元素放入最後乙個位置。

尾刪void seqlistpophback(seqlist *s)

只需將size-1即可,也得先判斷是否為空陣列

頭插 void seqlistpushfront(seqlist *s, datatype data)

首先要判斷是否為空陣列,並且是否有空餘位置插入。把陣列整體向後移一位(先移動最後乙個元素),將第0號元素空出來,把需要插入的元素放入即可,size++。

頭刪 void seqlistpopfront(seqlist *s)

判斷是否為空陣列,若不是,把後邊的元素整體向前移(先移動第乙個元素),size–。

讀任意位置元素datatype get(seqlist *s, size_t pos)

判斷是否為空陣列,直接輸出給定位置的元素還得判斷給的位置是否超出陣列最大範圍

修改任意位置元素void updatedata(seqlist *s, size_t pos, datatype data)

判斷是否為空陣列還得判斷給的位置是否超出陣列最大範圍, 先找到這個位置元素,將其值進行修改,

查詢指定元素值的下標size_t find(seqlist *s, datatype data)

判斷是否為空陣列還得判斷給的位置是否超出陣列最大範圍,給定乙個元素,遍歷,判斷是否與陣列內的元素相等,若不相等,count++,

在任意位置插入元素void insert(seqlist *s, size_t pos, datatype data)

首先要判斷是否為空陣列,並且是否有空餘位置插入還得判斷給的位置是否超出陣列最大範圍,將(下標+1)的元素依次向後移動,再將給定元素插入給定位置,size+1;

10.在任意位置刪除元素

要判斷是否為空陣列,將給定位置的下乙個元素向前覆蓋,依次到最後乙個元素,size-1。

各種函式主體:

#define max_size 10

#include

typedef

int datatype;

typedef

struct seqlist

seqlist;

void initseq(seqlist *s) //初始化靜態線性表

s->size = 0;

}void seqlistpushback(seqlist *s,datatype data) //尾部插入資料

if (s->size >max_size)

++s->size;

s->arr[s->size - 1] = data;

}void seqlistpopback(seqlist *s) //尾刪

--s->size;

}void seqlistpushfront(seqlist *s, datatype data)//頭插

if (s->size >max_size)

++s->size; //先將有效數字加一,保證不丟失資料

for (size_t i = s->size - 1; i > 0; i--)

s->arr[0] = data;

}void seqlistpopfront(seqlist *s)//頭刪

for (size_t i = 1; i <= s->size; i++)

s->size--;

}datatype get(seqlist *s, size_t pos)//讀任意位置的元素

if (pos >= s->size)

return s->arr[pos];

}void updatedata(seqlist *s, size_t pos, datatype data)//修改任意位置元素

if (pos>=s->size)

s->arr[pos - 1] = data;

}size_t find(seqlist *s, datatype data)//查詢指定元素值的下標

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

return -2;

}void insert(seqlist *s, size_t pos, datatype data)//在第pos個位置插入元素

if (s->size >max_size)

if (pos >= s->size)

++s->size;

for (size_t i = s->size-1; i >= pos; i--)

s->arr[pos - 1] = data;

}void delete(seqlist *s, size_t pos)//刪除下標為pos的元素

for (size_t i = pos; i < s->size-1; i++)

--s->size;

}void seqlistprint(seqlist *s)//列印整個陣列

printf("\n");

}

測試函式:

void test()

主函式:

#include

#include

#include"標頭.h"

int main()

測試結果:

(資料結構)靜態順序表的實現

pragma once include include define max size 10 typedef int datatype typedef struct seqlist seqlist,pseqlist 靜態順序表的特點是順序表中的元素個數是固定的,這裡的max size等於10,就說明...

資料結構 基於順序表實現棧

首先 要了解棧這樣一種結構。棧 一種特殊的線性結構,只允許在固定的一端進行插入和刪除元素操作。進行資料插入和刪除操作的一端稱為棧頂,另一端稱為棧底。不含任何元素地棧稱為空棧,棧又稱為後進先出的線性表。基於動態順序表實現的棧,實現以下操作 為了更好地實現以上操作,需要對棧進行初始化與銷毀,容量不夠時自...

資料結構靜態順序表

define max size 10 typedef int datatype struct seqlist 以上 就是建立乙個順序表,其中seqlist是整個順序表的空間而size是順序表中元素的個數。接下來我將用靜態順序表來實現尾插,頭插,任意插入資料,尾刪,頭刪等 標頭檔案 ifndef se...