資料結構之順序表

2021-08-22 16:36:23 字數 2157 閱讀 7242

(一)順序表

(1)概念:一種順序儲存結構;順序表上的元素按照一定邏輯順序儲存一段連續的儲存空間相鄰的兩個元素在物理位置上也相鄰 可以隨機訪問順序表中的元素(下標訪問)。

(2)分類

定長順序表,其儲存單元大小不變,具有侷限性;

不定長順序表,其儲存單元大小可變,當儲存空間滿了之後插入元素時可進行自動擴充;

(3)下列主要寫出了不定長順序表的**,定長順序表與不定長在操作上基本相同,除了不定長具有擴容機制

typedef int elemtype;

#define initsize 10;

typedef struct slist

slist,*pslist;

//初始化順序表

void init_list(pslist plist)

//判滿

bool isfull(pslist plist)

//判空

bool isempty(pslist plist)

//擴容

static void inc(pslist plist)

//在順序表指定的位置插入元素

bool insert_pos(pslist plist,int pos ,int val)

if(isfull(plist))

//從pos位置挪元素

for(int i=plist->length-1;i>=pos;i--)

//在pos插入元素

plist->data[pos] = val;

plist->length++;

return true;

}//在順序表中查詢某元素的下標

int search_val(pslist plist,int val)

} return pos;

}//刪除某個位置:先判斷此位置是否合法 不合法即刻返回

//如果合法,將pos位置之後的元素往前挪一位,覆蓋掉pos位置的值

bool del_pos(pslist plist,int pos)

for(int i = pos ;i < plist->length;++i)

plist->length--;

return true;

}//刪除指定的資料

//先查詢此資料是否在順序表上 在的話返回資料的下標 刪除此位置即可

bool del_val(pslist plist,int val)

//得到有效資料的長度

int get_length(pslist plist)

return -1;

}//得到順序表的長度

int getlength(pslist plist)

return false;

}//清空資料

bool clear(pslist plist)

return true;

}//銷毀順序表

void destroy(pslist plist)

free(plist->data);

plist->length=0;

plist->size=0;

}void show(pslist plist)

printf("\n");

}int main()

printf("delete before::\n");

printf("delete before length::%d\n",get_length(&ls));

show(&ls);

del_val(&ls,5);

printf("delete after::\n");

show(&ls);

printf("delete after length::%d\n",get_length(&ls));

clear(&ls);

printf("clear after length::%d\n",get_length(&ls));

show(&ls);

return 0;

}

(4)總結

對於順序表來說,其按位置插入元素和刪除元素的時間複雜度都為o(n),獲得順序表大小長度的時間複雜度為o(1),但是順序表尾插尾刪時間複雜度為o(1),如果要頻繁的執行尾插和尾刪,可以選擇使用順序表;由於順序表具有連續的儲存空間,可以用下標實現快速訪問元素。

資料結構之順序表

首先是標頭檔案seqlist.h ifndef seqlist h define seqlist h include includeusing namespace std define elemtype int define seqlist default size 10 typedef struc...

資料結構之順序表

順序表的思想容易了解,但是 不容易掌握,我這裡根據老師所提供的 進行一下簡單的總結 這個 包含順序表的查詢,插入,刪除,建表,輸出資料 includeusing namespace std define ok 1 define error 0 define overflow 2 typedef in...

資料結構之順序表

順序表就是按照順序儲存方式儲存的線性表,該線性表的結點按照邏輯次序一次存放在計算機的一組連續的儲存單元中如下圖 由於順序表是一次存放的,只要知道了該順序表的首位址以及每個資料元素所占用的儲存長度,那麼我們就很容易計算出任何乙個資料元素 也就是資料繫結點 的位置。1 結點資料型別 public cla...