数据结构_顺序表_顺序表的初始化、插入、删除、修改、查询打印(基于C语言实现)
版本:
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
*/
目录
目录
顺序表公式
/**
* 声明顺序表的结点
*
* 顺序表总结成公式
* 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;
}
本文来自博客园,作者:舟清颺,转载请注明原文链接:https://www.cnblogs.com/zqingyang/p/18166931