一、匯入:
二、儲存結構
與定長的順序表的儲存結構相比較,不定長的順序表只增加乙個元素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 又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其...