資料結構靜態順序表

2021-08-18 11:41:31 字數 3039 閱讀 7682

順序表:用一段位址連續儲存單元依次儲存資料元素的線性結構

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

#define max_size 10

#include#include#include

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

首先先定義乙個結構體型別seqlist( arr【】,size(有效的元素個數)),

預定義乙個陣列的最大長度,將整型資料變數typedef為datatype,為了以後在插入刪除別的型別時方便修改

初始化 void initseq(seqlist *s) 

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

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

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

尾刪void seqlistpophback(seqlist *s) 

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

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

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

頭刪 void seqlistpopfront(seqlist *s) 

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

查詢任意位置元素 void seqlistfind(seqlist *s, int pos) 

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

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

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

查詢指定元素值的下標void seqlistfind(seqlist *s, int data) 

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

在任意位置插入元素void seqlistinsert(seqlist *s, int pos,int data) 

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

10.在任意位置刪除元素 void seqlistdelete(seqlist *s,int  pos)

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

#include"seqlist.h"

typedef int datatype;

typedef struct seqlist

seqlist;

以上**,就是建立乙個順序表,其中seqlist是整個順序表的空間而size是順序表中元素的個數。

各種函式主體:

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

s->size = 0;

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

printf("\n");

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

s->size--;

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

if(s->size > max_size)

s->arr[s->size] = data;//size為有效元素個數,從0開始,相當於最後乙個為空元素,所以可以直接賦值

s->size++; //指向size下乙個空元素}

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

if(s->size>max_size)

++s->size;

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

s->arr[0] = data;

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

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

s->size--;

}int seqlistfind(seqlist *s,int data)//查詢指定元素

for(i=0;isize;i++)

}return -2;

}void seqlistinsert(seqlist *s,int pos,int data)//任意(pos)位置插入

if(10 == s->size )

s->size++;

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

s->arr[pos] = data;

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

for(i = pos;isize;i++)

s->size--;

}void seqlistremoveall(seqlist *s,int data)//刪除所有data元素

else

s->size -= count;

}}int binarysearch(seqlist *s,int data)

else if(data>mid)

else

}return 0;

}

測試部分:

void test()

主函式:

資料結構靜態順序表

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

資料結構 靜態順序表

本篇全部 都在linux系統下完成 用一段位址連續的單元依次儲存資料元素的線性結構,順序表又分為靜態順序表和動態順序表 首先建立乙個結構體seqlist,在結構體中我們定義了乙個陣列seqlist,用來存放資料,以及乙個無符號整形變數size,用來控制順序表有效資料的個數。即我們通過乙個簡單的陣列實...

資料結構 靜態順序表

資料型別的定義 typedef int datatype typedef struct seqlist seqlist,pseqlist 建立變數的初始化和銷毀 void initseqlist pseqlist ps void destroyseqlist pseqlist ps 順序表的列印 這...