順序表 簡單實現(靜態陣列)

2021-08-16 22:55:32 字數 3608 閱讀 7896

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

1. 初始化 

2. 尾插 

3. 尾刪 

4. 頭插 

5. 頭刪 

6. 讀任意位置元素 

7. 修改任意位置元素 

8. 查詢指定元素值的下標 

9. 在任意位置插入元素

實現環境:centos6.5 vim編輯器

大體的思路,頭插尾插主要是建立在陣列的最後位,而陣列的下標是以0開始的,即給其陣列的靜態空間加上尾插的個數,而將尾插的數依次賦給陣列的後邊,尾刪同樣的道理,刪除完後將空間減一即可。

頭插頭刪,以頭插乙個元素為例,開闢的靜態陣列空間加一,依次由最後乙個數替代上乙個數,到最後空出來的是第一位,將值傳給其空出來的即可。頭刪同樣的道理i=i+1;依次迴圈將第乙個值覆蓋,留出最後乙個空位置,然後減減。

先簡單的寫一下**,後邊有空將補上**:

seqlist.h檔案:

#pragma once //防止標頭檔案包含

#include#define seqlistmaxnum 1000

typedef char seqlisttype; //重定義型別 定義型別

typedef struct seqlistseqlist;

void seqlistinit(seqlist* seq); //初始化順序表

void seqlistprint(seqlist* seq,char* ch); //列印順序表

void seqlistpushend(seqlist* seq,seqlisttype value); //尾插乙個元素

void seqlistpopend(seqlist* seq); //尾刪乙個元素

void seqlistpushstart(seqlist* seq,seqlisttype value); //頭插乙個元素

void seqlistpopstart(seqlist* seq); //頭刪乙個元素

void seqlistpushposition(seqlist*seq ,size_t pos,seqlisttype value); //在下標為pos處插入元素

void seqlistpopposition(seqlist* seq, size_t pos); //刪除下標為pos的元素

void seqlistsetlist(seqlist* seq, size_t pos, seqlisttype value); //修改下標為pos的元素

seqlisttype seqlistgetlist(seqlist* seq, size_t pos); //讀下標為pos的元素

size_t seqlistgetpos(seqlist* seq, seqlisttype value); //查詢value元素值的下標

seqlist.c檔案:

#include "seqlist.h"

#include#include//初始化順序表

void seqlistinit(seqlist* seq)

//列印順序表

void seqlistprint(seqlist* seq,char* ch)

printf("size=%ld\n\n",seq->size);

}//尾插乙個元素

void seqlistpushend(seqlist* seq,seqlisttype value)

else

}//尾刪乙個元素

void seqlistpopend(seqlist* seq)

else

}//頭插乙個元素

void seqlistpushstart(seqlist *seq,seqlisttype value)

else

seq->seqlistarr[0]=value;

seq->size++; }}

//頭刪乙個元素

void seqlistpopstart(seqlist* seq)

else

seq->size--; }}

//在下標為pos處插入元素

void seqlistpushposition(seqlist* seq,size_t pos,seqlisttype value)

else if(pos >= seq->size)

else

seq->seqlistarr[pos]=value;

seq->size++;

}//刪除下標為pos的元素

void seqlistpopposition(seqlist* seq, size_t pos)

else if (pos >= seq->size)

else

seq->size--; }}

//修改下標為pos的元素

void seqlistsetlist(seqlist* seq,size_t pos,seqlisttype value)

else

}//讀下標為pos的元素

seqlisttype seqlistgetlist(seqlist* seq,size_t pos)

else

}//查詢value元素值的下標

size_t seqlistgetpos(seqlist* seq,seqlisttype value)

} return -1;

}//****************************///

/測試**///

//****************************///

//測試初始化順序表

void testseqlistinit()

//測試尾插乙個元素

void testseqlistpushend()

//測試尾刪乙個元素

void testseqlistpopend()

//測試頭插乙個元素

void testseqlistpushstart()

//測試頭刪乙個元素

void testseqlistpopstart()

//測試在pos處插入乙個元素

void testseqlistpushposition()

//測試刪除下標為pos的元素

void testseqlistpopposition()

//測試修改下標為pos的元素

void testseqlistsetlist()

void testseqlistgetlist()

//測試查詢value元素值的下標

void testseqlistgetpos()

int main()

makefile檔案:

seqlist:seqlist.c

gcc $^ -o $@

.phony:clean

clean:

rm -rf *.o seqlist

靜態順序表的實現

define crt secure no warnings include include include define max 10 typedef int datatype typedef struct seqlist seqlist,pseqlist void initseqlist pseq...

靜態順序表的實現

靜態順序表 實現 標頭檔案 seqlist.h pragma once define max size 10000 typedef unsigned int size t typedef int datatype 順序表元素型別 typedef struct seqlist seqlist,pseq...

靜態陣列實現的順序表(C語言實現)

在寫順序表之前我們先來了解下相關的一些知識,以便我們後期能夠寫出更好的東西。資料結構是相互之間存在一種或多種特定關係的資料元素的集合。根據資料元素之間關係的不同特性,通常有如下種基本結構 集合 結構中的元素之間除了 同屬於乙個集合 的關係外,別無其他的關係。如 廣義表。線性結構 結構中的資料元素之間...