動態線性表的操作

2021-08-16 08:11:51 字數 3254 閱讀 7700

# ifndef array

# define array

# include

# include

# include

/*線性表是零個或者多個資料元素的有限序列

特性:資料原始之間是有順序的;

資料元素的個數是有限的;

資料元素的型別必須相同

過程如下:

1.當插入乙個新的元素的時候,這個時候發現空間不足。

2.將原空間的資料拷貝到新的空間。

3.釋放掉舊的空間。

4.把元素放入新的空間。

*///動態增長記憶體,策略 將存放資料的記憶體放到?堆上

//動態陣列 如果5個元素 

//容量capacity表示我的這塊記憶體空間一共可以存放多少元素

//sizeof概念記錄當前陣列中具體的元素個數

//動態陣列的結構體定義完了

typedef struct array

_array;

//寫一系列的相關對array結構體操作的函式

//初始化

_array* _array_init();

//插入

void push_back__array(_array* arr, int value);

//根據位置刪除

void remove__array(_array* arr, int pos);

//根據值刪除

void remove_byvalue__array(_array* arr, int value);

//查詢

int find_array(_array* arr, int value);

//列印

void print_array(_array* arr);

//釋放動態陣列的記憶體

void freespace_array(_array* arr);

//清空陣列

void clear_array(_array* arr);

//獲得動態陣列容量

int capacity_array(_array* arr);

//獲得動態資料當前元素個數

int size_array(_array* arr);

//根據位置獲得某個位置元素

# include "array.h"

//動態陣列初始化

_array* _array_init()

//插入

void push_back__array(_array* arr, int value)

//判斷空間是否足夠

if(arr->size == arr->capacity)

//插入新元素

arr->paddr[arr->size] = value;

arr->size++;

}//根據位置刪除

void remove__array(_array* arr, int pos)

//判斷位置是否有效

if(pos < 0 || pos >= arr->size)

//刪除元素

for(int i = pos; i < arr->size - 1; i++)

arr->size--;

}//根據值刪除

void remove_byvalue__array(_array* arr, int value)

//找到值得位置

int pos = find_array(arr, value);

//根據位置刪除

remove__array(arr, pos);

}//查詢

int find_array(_array* arr, int value)

//查詢

int pos = -1;

for(int i = 0; i < arr->size; i++)

}return pos;

}//列印

void print_array(_array* arr)

int p = 0;

for(int i = 0; i < arr->size; i++)

p = 1;

printf("%d", arr->paddr[i]);

}printf("\n");

}//釋放動態陣列的記憶體

void freespace_array(_array* arr)

if(arr->paddr != null)

free(arr);

}//清空陣列

void clear_array(_array* arr)

//paddr->空

arr->size = 0;

}//獲得動態陣列容量

int capacity_array(_array* arr)

return arr->capacity;

}//獲得動態資料當前元素個數

int size_array(_array* arr)

return arr->size;

}//根據位置獲得某個位置元素

int at_array(_array* arr, int pos)

int at_array(_array* arr, int pos);

# endif

//main()

# include "array.h"

void test01()

//列印容量

printf("陣列容量 %d\n", capacity_array(myarray));

printf("元素數量 %d\n", size_array(myarray));

//列印

print_array(myarray);

//刪除

remove__array(myarray, 0);

remove_byvalue__array(myarray,27);

//列印

print_array(myarray);

//查詢5個位置

int pos = find_array(myarray, 5);

printf("5查詢到:pos: %d %d\n", pos, at_array(myarray, pos));

//銷毀

線性表 順序表的基本操作(動態)

線性結構示意圖 對於非空的線性表或線性結構,其特點是 線性表的抽象資料型別定義如下 adt list 線性表 每個元素的型別均為datatype。資料關係 一對一的關係,每個元素有乙個或零個前驅或後繼。operation 基本操作 線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的...

線性表操作

include stdio.h define maxsize 20 define overflow 1 define ok 1 define error 1 void init seqlist int length pointer 構造乙個空的線性表 int insert last int elem...

線性表操作

大概實現的功能 1 建立線性表類。線性表的儲存結構使用鍊錶。2 提供操作 自表首插入元素 刪除指定元素 搜尋表中是否有指定元素 輸出鍊錶。3 接收鍵盤錄入的一系列整數 例10,25,8,33,60 作為節點的元素值,建立鍊錶。輸出鍊錶內容。4 輸入乙個整數 例33 在鍊錶中進行搜尋,輸出其在鍊錶中的...