順序表:用一段位址連續儲存單元依次儲存資料元素的線性結構
#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 順序表的列印 這...