順序表的定義
邏輯結構上為綫性結構,存儲上為順序存儲的存儲結構
定義順序表類型,以及順序表中的元素類型
- 創建顺序表中的元素的数据类型,用户可以根据需要进行修改
typedef int DataType_t;
{
}
构造记录顺序表SequenceList各项参数(顺序表的首地址 + 顺序表的容量 + 顺序表中最后有效元素的下标)的结构体
typedef struct SequenceList
{
DataType_t *Data; // 记录顺序表首地址
unsigned int Size; // 记录顺序表的容量
int Last; // 顺序表中最后元素的下标
} SeqList_t;
順序表的初始化
- 創建一個順序表,爲其申請空間并對其容量和最後有效元素下標進行賦值
SeqList_t *SeqList_Creat(unsigned int size)
{
SeqList_t *Manager=(SeqList_t*)calloc(1,sizeof(Manager));
if(NULL == Manager)
{
rperror("calloc memory of Manager is failed\n");
exit(-1);
}
Manger->Data=(DataType_t *)calloce(size, sizeof(DataType_t));
if(NULL == Manager=>Data)
{
perror("calloc of Manager->Data is failed\n");
free(Manager);
exit(-1);
}
Manager->Size=Size;
Manager->Last=-1;
return Manager
}
順序表數據的插入
在插入數據前,我們需要對順序表中是否還具有空餘容量進行判斷
- 判斷順序表是否仍有容量
bool SeqList_IsFull(SeqList_t *Manager)
{
return (Manager->Last+1==Manager->Size) ? true:false;
}
- 指定位置插入
bool SeqList_Add(SeqList_t *Manager, DataType_t Data, unsigned int pos)
{
if(SeqList_IsFull(Manager))
{
printf("SequenceList is Full!\n");
return false;
}
for(int i = Manager-Last;i>=pos-1;i--)
{
Manager->Data[i+1]=Manager->Data[i];
}
Manager->Data[pos-1]=Data;
Manager->Last+1;
}
- 尾插
bool SeqList_HeadAdd(SeqList_t *Manager, DataType_t Data, unsigned int pos)
{
if(SeqList_IsFull(Manager))
{
printf("SequenceList is Full!\n");
return false;
}
Manager->Data[++Manager->Last]=Data;
}
順序表數據的刪除
bool SeqList_Del(SeqList_t *Manager, DataType_t DestVal)
{
// 1.判断顺序表是否为空
if (SeqList_IsEmpty(Manager))
{
printf("SequenceList is Empty!\n");
return false;
}
// 2.循環遍歷尋找目標值
for(int i=0;i<Manager->Last;i++)
{
if(Manager-Data==DestVal)
{
// 3.判斷是否在尾部
if(i+1==Manager->Last)
{
Manager->Last--;
return true;
}
else
{
for(int j=i+1;j<Manager->Last;j++)
{
Manager->Data[j-1]=Manager->Data[j];
}
Manager->Last--;
return true;
}
}
else
{
return false;
}
}
}
順序表數據的修改
bool SeqList_Change(SeqList_t *Manager,DataType_t DestVal,DataType_t New)
{
for(int i=0;i<Manager->Last;i++)
{
if(Manager-Data==DestVal)
{
Manager->Date[i]==New;
return true;
}
else
{
return false;
}
}
順序表數據的查找
int SeqList_Find(SeqList_t *Manager,DataType_t DestVal)
{
for(int i=0;i<Manager->Last;i++)
{
if(Manager-Data==DestVal)
{
return i+1;
}
else
{
return -1;
}
}
順序表的變例
void SeqList_Show(SeqList_t *Manager)
{
printf("順序表中的元素内容");
}
void SeqList_Change(SeqList_t *Manager)
{
for(int i=0;i<Manager->Last;i++)
{
SeqList_Show(Manager);
}
}
标签:return,int,Data,SeqList,改查,Manager,DataType,增刪,順序表
From: https://www.cnblogs.com/eon4051/p/18148963