版本:
2024年4月29日 V1.0 釋出於部落格園
/**
* @file name : SequenceList.c
* @brief : 實現順序表元素的增刪查改
* @author : RISE_AND_GRIND@163.com
* @date : 2024/04/29
* @version : 1.0
* @note : 模組化實現
* CopyRight (c) 2023-2024 RISE_AND_GRIND@163.com All Right Reseverd
*/
目錄
目錄
- 目錄
- 順序表公式
- 初始化順序表
- 構建順序表結點
- 建立一個空順序表
- 順序表判斷
- 判斷順序表是否已滿
- 判斷順序表是否為空
- 插入資料
- 頭插
- 尾插
- 刪除資料
- 指定元素刪除
- 指定位置刪除
- 修改資料
- 修改指定位置值
- 查詢列印資料
- 遍歷列印
- 測試
- 測試結果:
- 完整程式碼
- SequenceList.h
- SequenceList.c
- projecttesting.c
順序表公式
/**
* 宣告順序表的結點
*
* 順序表總結成公式
* struct xxx
* {
* //順序表的首地址
* //順序表的容量
* //順序表中最後元素的下標
* };
* 順序表的基本操作:
* 初始化單向迴圈連結串列 √
* 插入資料 √
* 刪除資料 √
* 修改資料 √
* 查詢列印資料√
*/
初始化順序表
構建順序表結點
// 順序表中元素的資料型別, 使用者可以工具需要進行修改
typedef int DataType_t;
// 構造記錄順序表SequenceList的各項引數的結構體
typedef struct SequenceList
{
DataType_t *Addr; // 記錄順序表的首地址
unsigned int Size; // 記錄順序表的容量
int Last; // 順序表中最後元素的下標 從0開始計算
} SeqList_t;
建立一個空順序表
/**
* @name SeqList_Create
* @brief 建立順序表並對順序表進行初始化
* @param Size 順序表的大小
* @return
* @retval Manager 順序表的管理結構體
* @date 2024/04/29
* @version 1.0
* @note Manager->Addr ---> [Size*sizeof(DataType_t)]
*/
SeqList_t *SeqList_Create(unsigned int Size)
{
// 使用calloc為順序表的管理結構體申請一塊堆記憶體
SeqList_t *Manager = (SeqList_t *)calloc(1, sizeof(Manager));
if (NULL == Manager)
{
perror("calloc memory for manager is failed");
exit(-1); // 程式異常終止
}
// 利用calloc為所有元素申請堆記憶體
Manager->Addr = (DataType_t *)calloc(Size, sizeof(DataType_t));
if (NULL == Manager->Addr)
{
perror("calloc memory for element is failed");
free(Manager); // 釋放申請失敗後的管理結構體
exit(-1); // 程式異常終止
}
// 對管理順序表的結構體進行初始化(元素容量 + 最後元素的下標)
Manager->Size = Size; // 對順序表中的容量進行初始化
Manager->Last = -1; // 英語順序表位空, 則最後元素下標初始值為-1
return Manager;
}
順序表判斷
判斷順序表是否已滿
/**
* @name SeqList_IsFull
* @brief 判斷順序表是否已滿
* @param Manager 順序表的管理結構體
* @return
* @retval true 順序表已滿
* @retval false 順序表未滿
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_IsFull(SeqList_t *Manager)
{
return (Manager->Last + 1 == Manager->Size) ? true : false;
}
判斷順序表是否為空
/**
* @name SeqList_IsEmpty
* @brief 判斷順序表是否為空
* @param Manager 順序表的管理結構體
* @return
* @retval true 順序表為空
* @retval false 順序表非空
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_IsEmpty(SeqList_t *Manager)
{
return (-1 == Manager->Last) ? true : false;
}
插入資料
頭插
/**
* @name SeqList_HeadAdd
* @brief 向順序表的頭部加入元素
* @param Manager 順序表的管理結構體
* @param Data 要加入的元素
* @return
* @retval true 插入成功
* @retval false 插入失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_HeadAdd(SeqList_t *Manager, DataType_t Data)
{
// 判斷順序表是否已滿
if (SeqList_IsFull(Manager))
{
printf("SequenceList is Full!\n");
return false;
}
// 如果順序表有空閒空間,則需要把順序表所有元素向後移動1個單位
for (int i = Manager->Last; i >= 0; i--)
{
Manager->Addr[i + 1] = Manager->Addr[i];
}
// 把新元素新增到順序表的頭部,並且更新管理結構體中的元素下標+1
Manager->Addr[0] = Data;
Manager->Last++;
return true;
}
尾插
/**
* @name SeqList_TailAdd
* @brief 向順序表的尾部加入元素
* @param Manager 順序表的管理結構體
* @param Data 要加入的元素
* @return
* @retval true 插入成功
* @retval false 插入失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_TailAdd(SeqList_t *Manager, DataType_t Data)
{
// 1.判斷順序表是否已滿
if (SeqList_IsFull(Manager))
{
printf("SequenceList is Full!\n");
return false;
}
// 2.如果順序表有空閒空間,則把新元素新增到順序表尾部
Manager->Addr[++Manager->Last] = Data;
return true;
}
刪除資料
指定元素刪除
/**
* @name SeqList_Del
* @brief 刪除順序表中的指定值的元素
* @param Manager 順序表的管理結構體
* @param dest 要刪除的元素
* @return
* @retval true 刪除成功
* @retval false 刪除失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_Del(SeqList_t *Manager, DataType_t dest)
{
int current = -1; // 記錄要刪除的元素下標
// 判斷順序表是否為空
if (SeqList_IsEmpty(Manager))
{
printf("SequenceList is Empty! \n");
return false;
}
// 查詢目標值是否在順序表中
for (int i = 0; i < Manager->Last; ++i)
{
// 若在順序表中找到目標值
if (dest == Manager->Addr[i])
{
current = i; // 備份目標元素下標
break;
}
}
// 如果順序表沒有目標值的元素則直接終止函式
if (-1 == current)
{
printf("destval [%d] is not found\n", dest);
return false;
}
// 若找到目標元素, 直接將該元素的後繼元素全部向前移動一個單元
for (int i = current; i < Manager->Last; ++i)
{
Manager->Addr[i] = Manager->Addr[i + 1];
}
// 由於刪除了一個元素, 應該讓順序表有效元素下標-1
Manager->Last--;
return true;
}
指定位置刪除
/**
* @name SeqList_Remove
* @brief 刪除順序表中的指定位置的元素
* @param Manager 順序表的管理結構體
* @param index 要刪除的元素下標
* @return
* @retval true 刪除成功
* @retval false 刪除失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_Remove(SeqList_t *Manager, int index)
{
// 判斷順序表的地址是否有效
if (NULL == Manager->Addr)
{
perror("The address of the input SequenceList is invalid!");
return false;
}
// 判斷順序表是否為空
if (SeqList_IsEmpty(Manager))
{
printf("SequenceList is Empty! \n");
return false;
}
// 判斷輸入下標是否有效
if (index < 0 || index >= Manager->Last)
{
printf("The position you entered is not valid. Please re-enter!\n");
return false;
}
// 若輸入的位置合法, 直接將該位置的後繼元素全部向前移動一個單元
for (int i = index - 1; i < Manager->Last; ++i) // 執行Last-index次
{
Manager->Addr[i] = Manager->Addr[i + 1];
}
// 由於刪除了一個元素, 應該讓順序表有效元素下標-1
Manager->Last--;
return true;
}
修改資料
修改指定位置值
/**
* @name SeqList_Modify
* @brief 修改順序表中的指定位置的元素
* @param Manager 順序表的管理結構體
* @param index 要修改的元素下標
* @param dest 要修改的元素下標
* @return
* @retval true 刪除成功
* @retval false 刪除失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_Modify(SeqList_t *Manager, int index, DataType_t dest)
{
// 判斷順序表的地址是否有效
if (NULL == Manager->Addr)
{
perror("The address of the input SequenceList is invalid!");
return false;
}
// 判斷順序表是否為空
if (SeqList_IsEmpty(Manager))
{
printf("SequenceList is Empty! \n");
return false;
}
// 判斷輸入下標是否有效
if (index < 0 || index >= Manager->Last)
{
printf("The position you entered is not valid. Please re-enter!\n");
return false;
}
Manager->Addr[index - 1] = dest;
return true;
}
查詢列印資料
遍歷列印
/**
* @name SeqList_Print
* @brief 從頭到尾遍歷順序表的元素
* @param Manager 順序表的管理結構體
* @param dest 要刪除的元素
* @return
* @retval true 刪除成功
* @retval false 刪除失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
void SeqList_Print(SeqList_t *Manager)
{
for (int i = 0; i <= Manager->Last; ++i)
{
printf("Element[%d] = %d\n", i, Manager->Addr[i]); // 列印順序表單後設資料
}
}
測試
/**
* @file name : projecttesting.c
* @brief : 實現順序表的相關功能測試
* @author : RISE_AND_GRIND@163.com
* @date : 2024/04/29
* @version : 1.0
* @note :
* CopyRight (c) 2023-2024 RISE_AND_GRIND@163.com All Right Reseverd
*/
#include "SequenceList.h"
int main(int argc, char const *argv[])
{
// 建立順序表, 空表
SeqList_t *Manager = SeqList_Create(10);
printf("*********************************SeqList_IsEmpty********************************\n");
// 測試順序表是否為空
if (SeqList_IsEmpty(Manager) == true)
{
printf("SeqList is empty!\n");
}
// 頭插法 向順序表的頭部加入元素
printf("*********************************SeqList_HeadAdd********************************\n");
SeqList_HeadAdd(Manager, 3);
SeqList_HeadAdd(Manager, 2);
SeqList_HeadAdd(Manager, 1);
SeqList_Print(Manager);
/*1 2 3*/
// 尾插法 向連結串列中插入新結點
printf("*********************************SeqList_TailAdd********************************\n");
SeqList_TailAdd(Manager, 4);
SeqList_TailAdd(Manager, 5);
SeqList_TailAdd(Manager, 6);
SeqList_TailAdd(Manager, 7);
SeqList_TailAdd(Manager, 8);
SeqList_Print(Manager);
/*1 2 3 4 5 6 7 8*/
// 刪除順序表中的指定值的元素
printf("*********************************SeqList_Del********************************\n");
SeqList_Del(Manager, 1);
SeqList_Del(Manager, 3);
SeqList_Del(Manager, 5);
SeqList_Del(Manager, 7);
SeqList_Print(Manager);
/*2 4 6 8*/
// 刪除順序表中的指定位置的元素
printf("*********************************SeqList_Remove********************************\n");
SeqList_Remove(Manager, 2);
SeqList_Print(Manager);
/*2 6 8*/
// 修改順序表中的指定位置的元素
printf("*********************************SeqList_Modify********************************\n");
SeqList_Modify(Manager, 1, 100);
SeqList_Print(Manager);
/*100 6 8*/
// 等待使用者響應
printf("***Press any key to exit the test***\n");
getchar();
return 0;
}
測試結果:
*********************************SeqList_IsEmpty********************************
SeqList is empty!
*********************************SeqList_HeadAdd********************************
Element[0] = 1
Element[1] = 2
Element[2] = 3
*********************************SeqList_TailAdd********************************
Element[0] = 1
Element[1] = 2
Element[2] = 3
Element[3] = 4
Element[4] = 5
Element[5] = 6
Element[6] = 7
Element[7] = 8
*********************************SeqList_Del********************************
Element[0] = 2
Element[1] = 4
Element[2] = 6
Element[3] = 8
*********************************SeqList_Remove********************************
Element[0] = 2
Element[1] = 6
Element[2] = 8
*********************************SeqList_Modify********************************
Element[0] = 100
Element[1] = 6
Element[2] = 8
***Press any key to exit the test***
完整程式碼
SequenceList.h
#ifndef __SEQUENCELIST_H
#define __SEQUENCELIST_H
/**
* @file name : SequenceList.c
* @brief : 實現順序表元素的增刪查改
* @author : RISE_AND_GRIND@163.com
* @date : 2024/04/29
* @version : 1.0
* @note : 模組化實現
* CopyRight (c) 2023-2024 RISE_AND_GRIND@163.com All Right Reseverd
*/
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
/**
* 宣告順序表的結點
*
* 順序表總結成公式
* struct xxx
* {
* //順序表的首地址
* //順序表的容量
* //順序表中最後元素的下標
* };
* 雙向迴圈連結串列的基本操作:
* 初始化單向迴圈連結串列 √
* 插入資料 √
* 刪除資料 √
* 修改資料 √
* 查詢列印資料√
*/
// 順序表中元素的資料型別, 使用者可以工具需要進行修改
typedef int DataType_t;
// 構造記錄順序表SequenceList的各項引數的結構體
typedef struct SequenceList
{
DataType_t *Addr; // 記錄順序表的首地址
unsigned int Size; // 記錄順序表的容量
int Last; // 順序表中最後元素的下標 從0開始計算
} SeqList_t;
/**
* @name SeqList_Create
* @brief 建立順序表並對順序表進行初始化
* @param Size 順序表的大小
* @return
* @retval Manager 順序表的管理結構體
* @date 2024/04/29
* @version 1.0
* @note Manager->Addr ---> [Size*sizeof(DataType_t)]
*/
SeqList_t *SeqList_Create(unsigned int Size);
/**
* @name SeqList_IsFull
* @brief 判斷順序表是否已滿
* @param Manager 順序表的管理結構體
* @return
* @retval true 順序表已滿
* @retval false 順序表未滿
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_IsFull(SeqList_t *Manager);
/**
* @name SeqList_IsEmpty
* @brief 判斷順序表是否為空
* @param Manager 順序表的管理結構體
* @return
* @retval true 順序表為空
* @retval false 順序表非空
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_IsEmpty(SeqList_t *Manager);
/**
* @name SeqList_TailAdd
* @brief 向順序表的尾部加入元素
* @param Manager 順序表的管理結構體
* @param Data 要加入的元素
* @return
* @retval true 插入成功
* @retval false 插入失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_TailAdd(SeqList_t *Manager, DataType_t Data);
/**
* @name SeqList_HeadAdd
* @brief 向順序表的頭部加入元素
* @param Manager 順序表的管理結構體
* @param Data 要加入的元素
* @return
* @retval true 插入成功
* @retval false 插入失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_HeadAdd(SeqList_t *Manager, DataType_t Data);
/**
* @name SeqList_Del
* @brief 刪除順序表中的指定值的元素
* @param Manager 順序表的管理結構體
* @param dest 要刪除的元素
* @return
* @retval true 刪除成功
* @retval false 刪除失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_Del(SeqList_t *Manager, DataType_t dest);
/**
* @name SeqList_Remove
* @brief 刪除順序表中的指定位置的元素
* @param Manager 順序表的管理結構體
* @param index 要刪除的元素下標
* @return
* @retval true 刪除成功
* @retval false 刪除失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_Remove(SeqList_t *Manager, int index);
/**
* @name SeqList_Modify
* @brief 修改順序表中的指定位置的元素
* @param Manager 順序表的管理結構體
* @param index 要修改的元素下標
* @param dest 要修改的元素下標
* @return
* @retval true 刪除成功
* @retval false 刪除失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_Modify(SeqList_t *Manager, int index, DataType_t dest);
/**
* @name SeqList_Print
* @brief 從頭到尾遍歷順序表的元素
* @param Manager 順序表的管理結構體
* @param dest 要刪除的元素
* @return
* @retval true 刪除成功
* @retval false 刪除失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
void SeqList_Print(SeqList_t *Manager);
#endif
SequenceList.c
/**
* @file name : SequenceList.c
* @brief : 實現順序表元素的增刪查改
* @author : RISE_AND_GRIND@163.com
* @date : 2024/04/29
* @version : 1.0
* @note : 模組化實現
* CopyRight (c) 2023-2024 RISE_AND_GRIND@163.com All Right Reseverd
*/
#include "SequenceList.h"
/**
* @name SeqList_Create
* @brief 建立順序表並對順序表進行初始化
* @param Size 順序表的大小
* @return
* @retval Manager 順序表的管理結構體
* @date 2024/04/29
* @version 1.0
* @note Manager->Addr ---> [Size*sizeof(DataType_t)]
*/
SeqList_t *SeqList_Create(unsigned int Size)
{
// 使用calloc為順序表的管理結構體申請一塊堆記憶體
SeqList_t *Manager = (SeqList_t *)calloc(1, sizeof(Manager));
if (NULL == Manager)
{
perror("calloc memory for manager is failed");
exit(-1); // 程式異常終止
}
// 利用calloc為所有元素申請堆記憶體
Manager->Addr = (DataType_t *)calloc(Size, sizeof(DataType_t));
if (NULL == Manager->Addr)
{
perror("calloc memory for element is failed");
free(Manager); // 釋放申請失敗後的管理結構體
exit(-1); // 程式異常終止
}
// 對管理順序表的結構體進行初始化(元素容量 + 最後元素的下標)
Manager->Size = Size; // 對順序表中的容量進行初始化
Manager->Last = -1; // 英語順序表位空, 則最後元素下標初始值為-1
return Manager;
}
/**
* @name SeqList_IsFull
* @brief 判斷順序表是否已滿
* @param Manager 順序表的管理結構體
* @return
* @retval true 順序表已滿
* @retval false 順序表未滿
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_IsFull(SeqList_t *Manager)
{
return (Manager->Last + 1 == Manager->Size) ? true : false;
}
/**
* @name SeqList_IsEmpty
* @brief 判斷順序表是否為空
* @param Manager 順序表的管理結構體
* @return
* @retval true 順序表為空
* @retval false 順序表非空
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_IsEmpty(SeqList_t *Manager)
{
return (-1 == Manager->Last) ? true : false;
}
/**
* @name SeqList_TailAdd
* @brief 向順序表的尾部加入元素
* @param Manager 順序表的管理結構體
* @param Data 要加入的元素
* @return
* @retval true 插入成功
* @retval false 插入失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_TailAdd(SeqList_t *Manager, DataType_t Data)
{
// 1.判斷順序表是否已滿
if (SeqList_IsFull(Manager))
{
printf("SequenceList is Full!\n");
return false;
}
// 2.如果順序表有空閒空間,則把新元素新增到順序表尾部
Manager->Addr[++Manager->Last] = Data;
return true;
}
/**
* @name SeqList_HeadAdd
* @brief 向順序表的頭部加入元素
* @param Manager 順序表的管理結構體
* @param Data 要加入的元素
* @return
* @retval true 插入成功
* @retval false 插入失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_HeadAdd(SeqList_t *Manager, DataType_t Data)
{
// 判斷順序表是否已滿
if (SeqList_IsFull(Manager))
{
printf("SequenceList is Full!\n");
return false;
}
// 如果順序表有空閒空間,則需要把順序表所有元素向後移動1個單位
for (int i = Manager->Last; i >= 0; i--)
{
Manager->Addr[i + 1] = Manager->Addr[i];
}
// 把新元素新增到順序表的頭部,並且更新管理結構體中的元素下標+1
Manager->Addr[0] = Data;
Manager->Last++;
return true;
}
/**
* @name SeqList_Del
* @brief 刪除順序表中的指定值的元素
* @param Manager 順序表的管理結構體
* @param dest 要刪除的元素
* @return
* @retval true 刪除成功
* @retval false 刪除失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_Del(SeqList_t *Manager, DataType_t dest)
{
int current = -1; // 記錄要刪除的元素下標
// 判斷順序表是否為空
if (SeqList_IsEmpty(Manager))
{
printf("SequenceList is Empty! \n");
return false;
}
// 查詢目標值是否在順序表中
for (int i = 0; i < Manager->Last; ++i)
{
// 若在順序表中找到目標值
if (dest == Manager->Addr[i])
{
current = i; // 備份目標元素下標
break;
}
}
// 如果順序表沒有目標值的元素則直接終止函式
if (-1 == current)
{
printf("destval [%d] is not found\n", dest);
return false;
}
// 若找到目標元素, 直接將該元素的後繼元素全部向前移動一個單元
for (int i = current; i < Manager->Last; ++i)
{
Manager->Addr[i] = Manager->Addr[i + 1];
}
// 由於刪除了一個元素, 應該讓順序表有效元素下標-1
Manager->Last--;
return true;
}
/**
* @name SeqList_Remove
* @brief 刪除順序表中的指定位置的元素
* @param Manager 順序表的管理結構體
* @param index 要刪除的元素下標
* @return
* @retval true 刪除成功
* @retval false 刪除失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_Remove(SeqList_t *Manager, int index)
{
// 判斷順序表的地址是否有效
if (NULL == Manager->Addr)
{
perror("The address of the input SequenceList is invalid!");
return false;
}
// 判斷順序表是否為空
if (SeqList_IsEmpty(Manager))
{
printf("SequenceList is Empty! \n");
return false;
}
// 判斷輸入下標是否有效
if (index < 0 || index >= Manager->Last)
{
printf("The position you entered is not valid. Please re-enter!\n");
return false;
}
// 若輸入的位置合法, 直接將該位置的後繼元素全部向前移動一個單元
for (int i = index - 1; i < Manager->Last; ++i) // 執行Last-index次
{
Manager->Addr[i] = Manager->Addr[i + 1];
}
// 由於刪除了一個元素, 應該讓順序表有效元素下標-1
Manager->Last--;
return true;
}
/**
* @name SeqList_Modify
* @brief 修改順序表中的指定位置的元素
* @param Manager 順序表的管理結構體
* @param index 要修改的元素下標
* @param dest 要修改的元素下標
* @return
* @retval true 刪除成功
* @retval false 刪除失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
bool SeqList_Modify(SeqList_t *Manager, int index, DataType_t dest)
{
// 判斷順序表的地址是否有效
if (NULL == Manager->Addr)
{
perror("The address of the input SequenceList is invalid!");
return false;
}
// 判斷順序表是否為空
if (SeqList_IsEmpty(Manager))
{
printf("SequenceList is Empty! \n");
return false;
}
// 判斷輸入下標是否有效
if (index < 0 || index >= Manager->Last)
{
printf("The position you entered is not valid. Please re-enter!\n");
return false;
}
Manager->Addr[index - 1] = dest;
return true;
}
/**
* @name SeqList_Print
* @brief 從頭到尾遍歷順序表的元素
* @param Manager 順序表的管理結構體
* @param dest 要刪除的元素
* @return
* @retval true 刪除成功
* @retval false 刪除失敗
* @date 2024/04/29
* @version 1.0
* @note
*/
void SeqList_Print(SeqList_t *Manager)
{
for (int i = 0; i <= Manager->Last; ++i)
{
printf("Element[%d] = %d\n", i, Manager->Addr[i]); // 列印順序表單後設資料
}
}
projecttesting.c
/**
* @file name : projecttesting.c
* @brief : 實現順序表的相關功能測試
* @author : RISE_AND_GRIND@163.com
* @date : 2024/04/29
* @version : 1.0
* @note :
* CopyRight (c) 2023-2024 RISE_AND_GRIND@163.com All Right Reseverd
*/
#include "SequenceList.h"
int main(int argc, char const *argv[])
{
// 建立順序表, 空表
SeqList_t *Manager = SeqList_Create(10);
printf("*********************************SeqList_IsEmpty********************************\n");
// 測試順序表是否為空
if (SeqList_IsEmpty(Manager) == true)
{
printf("SeqList is empty!\n");
}
// 頭插法 向順序表的頭部加入元素
printf("*********************************SeqList_HeadAdd********************************\n");
SeqList_HeadAdd(Manager, 3);
SeqList_HeadAdd(Manager, 2);
SeqList_HeadAdd(Manager, 1);
SeqList_Print(Manager);
/*1 2 3*/
// 尾插法 向連結串列中插入新結點
printf("*********************************SeqList_TailAdd********************************\n");
SeqList_TailAdd(Manager, 4);
SeqList_TailAdd(Manager, 5);
SeqList_TailAdd(Manager, 6);
SeqList_TailAdd(Manager, 7);
SeqList_TailAdd(Manager, 8);
SeqList_Print(Manager);
/*1 2 3 4 5 6 7 8*/
// 刪除順序表中的指定值的元素
printf("*********************************SeqList_Del********************************\n");
SeqList_Del(Manager, 1);
SeqList_Del(Manager, 3);
SeqList_Del(Manager, 5);
SeqList_Del(Manager, 7);
SeqList_Print(Manager);
/*2 4 6 8*/
// 刪除順序表中的指定位置的元素
printf("*********************************SeqList_Remove********************************\n");
SeqList_Remove(Manager, 2);
SeqList_Print(Manager);
/*2 6 8*/
// 修改順序表中的指定位置的元素
printf("*********************************SeqList_Modify********************************\n");
SeqList_Modify(Manager, 1, 100);
SeqList_Print(Manager);
/*100 6 8*/
// 等待使用者響應
printf("***Press any key to exit the test***\n");
getchar();
return 0;
}