# 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 在鍊錶中進行搜尋,輸出其在鍊錶中的...