主要操作結構體中的指標,在init函式裡對指標進行記憶體開闢,checkcapacity函式在每次插入之前檢查一遍,如果可用空間沒有了,就開闢當前最大容量的兩倍。其他操作與靜態順序表無大區別。
seqlist.h
#pragma once
#define datatype int
typedef struct seqlist *pseqlistd, seqlistd;
void seqlistdinit(pseqlistd ps, int capacity);
void seqlistdpushback(pseqlistd ps, datatype data);
void seqlistdpopback(pseqlistd ps);
void seqlistdinsert(pseqlistd ps, int pos, datatype data);
void seqlistderase(pseqlistd ps, int pos);
// 獲取元素個數
int seqlistdsize(pseqlistd ps);
// 獲取順序表的容量
int seqlistdcapacity(pseqlistd ps);
int seqlistdempty(pseqlistd ps);
// 將順序表中的元素清空 注意:不改變順序表空間的大小
void seqlistdclear(pseqlistd ps);
void seqlistddestroy(pseqlistd * ps);
// 對順序表進行增容
int checkcapacity(pseqlistd ps);
test.c
#include "seqlistd.h"
int main()
seqlist.c
#include "seqlistd.h"
#include
#include
void seqlistdinit(pseqlistd ps, int capacity)
ps->size = 0;
ps->capicity = capacity;
ps->array = (datatype*)malloc(sizeof(datatype) * capacity);
if (ps->array == null)
}void seqlistddestroy(pseqlistd ps)
free(ps->array);
ps->array = null;
}void seqlistdpushback(pseqlistd ps, datatype data)
if (checkcapacity(ps))
}void seqlistdpopback(pseqlistd ps)
if (ps->size == 0)
ps->size--;
}void seqlistdinsert(pseqlistd ps, int pos, datatype data)
if (checkcapacity(ps))
ps->array[pos] = data;
ps->size++;
}}void seqlistderase(pseqlistd ps, int pos)
if (ps->size == 0)
int i = 0;
for (i = pos; i < ps->size - 1; i++)
ps->size--;
}// 對順序表進行增容
int checkcapacity(pseqlistd ps)
//防止新空間開闢失敗舊空間丟失的情況
if (ps->size == ps->capicity)
ps->array = newbase;
ps->capicity *= 2;
}return1;}
// 獲取元素個數
int seqlistdsize(pseqlistd ps)
return ps->size;
}// 獲取順序表的容量
int seqlistdcapacity(pseqlistd ps)
return ps->capicity;
}int seqlistdempty(pseqlistd ps)
return ps->size ? 1 : 0;
}// 將順序表中的元素清空 注意:不改變順序表空間的大小
void seqlistdclear(pseqlistd ps)
ps->size = 0;
}
C語言實現動態順序表
include include include include ifndef list h define list h define default 3 初始化開闢容量大小 define int sz 2 每次固定增容大小 typedef int datatype typedef struct se...
C語言實現動態順序表
關鍵知識點 動態順序表的儲存是以動態陣列的方式,它比之靜態順序表,在空間的開闢上,更加的靈活。避免了靜態順序表的定長陣列儲存方式而導致空間開闢小了不夠用,開闢大了造成記憶體浪費的特點。根據實際需要,自己掌控對記憶體空間大小的分配。因而動態順序表在實際應用中更加廣泛。對順序表的主要操作 初始化順序表 ...
C語言實現順序表
標頭檔案部分 include include include typedef int datatype define maxsize 10 typedef struct seqlist seqlist 列印順序表的內容 void printseqlist seqlist seq 初始化順序表 voi...