大家有沒有發現上次靜態順序表有一定的缺陷,它會浪費很多的空間,比如我們只有10個元素但我們申請元素申請100個,這樣我們會浪費90個空間,而動態順序表我們插入多少個我們就申請多少個,大大的節省了我們大的空間。
首先我們來看看動態順序表的結構:
typedef struct deqlist
deqlist;
size是有效元素的個數,capacity是最大儲存長度
當size大於等於capacity時,我們就進行擴容。
//拓展動態順序表
void explanddeqlist(deqlist *l)
}
1.尾增(時間複雜度o(1))
void pushback(deqlist *l, datatype data)
2.尾刪(時間複雜度o(1))
void popback(deqlist *l)
}
3.頭增(時間複雜度o(n))
void pushfront(deqlist *l,datatype data)
l->array[0] = data;
l->size++;
}
4.頭刪(時間複雜度o(n))
void popfront(deqlist *l)
l->size--;
}
我們來看看所有**:
#define _crt_secure_no_warnings 1
#include #include #include #include typedef int datatype;
#define size__ 10
typedef struct deqlist
deqlist;
//列印陣列
void printdeqlist(deqlist*l)
printf("\n");
}//動態順序表初始化
void initdeqlist(deqlist *l)
//拓展動態順序表
void explanddeqlist(deqlist *l)
}//尾增
void pushback(deqlist *l, datatype data)
//尾刪
void popback(deqlist *l)
}//頭增
void pushfront(deqlist *l,datatype data)
l->array[0] = data;
l->size++;
}//頭刪
void popfront(deqlist *l)
l->size--;
}int main()
資料結構 動態順序表
pragma once include include includetypedef int datatype typedef struct seqlist seqlist,psseqlist void seqlistinit psseqlist ps,int capacity 初始化鍊錶 void...
資料結構 動態順序表
在說順序表之前我們先來了解一下線性表,線性表就是n個型別相同的資料元素的有限序列.線性表在邏輯上是線性的結構,可以理解為一條直線,但是在物理上不一定是連續的,物理上通常是以陣列和鏈式結構形式儲存 比如 順序表是用一段實體地址連續的儲存單元依次儲存資料元素的線性結構,一般情況下採用陣列儲存。在陣列上完...
資料結構 順序表
順序表的特徵 1由唯一的表名標識 2佔據一塊連續的儲存空間 3資料順序存放,元素之間有先後關係 定義動態的順序表 define maxsize 100 typedef struct sqlist 這個結構體型別存放的是順序表的資訊和順序表的資料 初始化順序表 void initsqlist sqli...