資料結構 順序表(二) 不定長順序表

2021-09-11 20:11:08 字數 2778 閱讀 2297

一、匯入:

二、儲存結構

與定長的順序表的儲存結構相比較,不定長的順序表只增加乙個元素listsize(用於記錄當前順序表的總長度),具體結構如下圖所示:

結構定義:

typedef struct dseqlist

int *elem;//指向存放資料的動態陣列

int length;//有效資料個數

int listsize;//總容量,總格仔數

}dseqlist,*pdseqlist;

三、基本操作

1、標頭檔案:dseqlist.h 

#pragma once//防止標頭檔案重複引用

//不定長順序表

#define initsize 10

typedef struct dseqlist

dseqlist,*pdseqlist;

//初始化函式

void initseqlist(pdseqlist ps);

//在pos位置插入值val

bool insert(pdseqlist ps,int pos,int val);

//查詢key,並返回所在位置的下標

int search(pdseqlist ps,int key);

//刪除key值

bool deleteval(pdseqlist ps,int key);

//刪除pos位置上的元素

bool deletepos(pdseqlist ps,int pos);

//獲取順序表的有效長度

int getlength(pdseqlist ps);

//判空函式

bool isempty(pdseqlist ps);

//清空函式

void clear(pdseqlist ps);

//銷毀函式

void destroy(pdseqlist ps);

//列印函式

void show(pdseqlist ps);

//獲取pos位置上值

bool getelem(pdseqlist ps,int pos,int *rtval);

2、功能函式原始檔:dseqlist.cpp

#include #include #include #include "dseqlist.h"

//初始化順序表

void initseqlist(pdseqlist ps)

ps->elem = (int *)malloc(initsize*sizeof(int));

ps->length = 0;

ps->listsize = initsize;

}//判滿

static bool isfull(pdseqlist ps)

//將總容量擴大到原來的2倍

static void inc(pdseqlist ps)

//插入函式

bool insert(pdseqlist ps,int pos,int val)

if(isfull(ps))//若順序表已滿,則進行擴容

for(int i=ps->length-1;i>=pos;i--)//移動後面的資料

ps->elem[pos] = val;

ps->length++;

return true;

}//查詢

int search(pdseqlist ps,int key) }

return -1;

}//刪除數值key

bool deleteval(pdseqlist ps,int key)

//刪除pos位置上的元素

bool deletepos(pdseqlist ps,int pos)

for(int i=pos;ilength-1;i++)

ps->length--;

return true;

}//順序表的長度

int getlength(pdseqlist ps)

//判空函式

bool isempty(pdseqlist ps)

//清空函式

void clear(pdseqlist ps)

//銷毀函式

void destroy(pdseqlist ps)

//列印函式

void show(pdseqlist ps)

printf("\n");

}//獲取pos位置上的值

bool getelem(pdseqlist ps,int pos,int *rtval)

*rtval = ps->elem[pos];

return true;

}

3、測試原始檔:main.cpp

#include #include "dseqlist.h"  

int main()

deleteval(&seq,5);

show(&seq);

insert(&seq,3,30);

show(&seq);

//clear(&seq);

//show(&seq);

destroy(&seq);

destroy(&seq);

return 0;

}

資料結構 不定長順序表

順序表是在計算機記憶體中以陣列的形式儲存的線性表,所以順序表的儲存結構和陣列非常類似,而它最顯要的特點就是邏輯位址和實體地址都相連。alterlist.h pragma once pragma once是乙個比較常用的c c 預處理指令,只要在標頭檔案的最開始加入這條預處理指令,就能夠保證標頭檔案只...

資料結構,定長順序表

typedef struct seqlist 定長順序表 seqlist,pseqlist 44 初始化順序表ps void initseqlist pseqlist ps pseqlist seqlist ps length 0 有效資料個數為0 判斷順序表是否為滿 static bool isf...

資料結構 不定長順序棧

1 棧 stack 又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其...