實現基於靜態陣列的順序表的以下基本操作:
首先先定義乙個結構體型別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...