#include <stdio.h>
#include <stdlib.h>
#define MAX 100
// 构造顺序表
typedef struct seqlist
{
int data[MAX];
int last;//下标
}seqlist;
// 初始化
seqlist* initSeqList()
{
// 开辟空间,存放表
seqlist* seq = (seqlist*)malloc(sizeof(seqlist));
// 容错判断
if (seq == NULL)
{
perror("init malloc error!\n");
return NULL;
}
int last = -1;
return seq;
}
// 判满
int isFull(seqlist* list)
{
return list->last == MAX - 1;
}
// 任意位置插入
void insertSeqList(seqlist* list, int position, int data)
{
// 容错判断
if (position < 0 || position > list->last + 1 || isFull(list))
{
printf("位置错误!\n");
}
// 将位置转换为下标
position -= 1;
// 插入操作:将最后一个到插入位置间的元素向后移动
for (int i = list->last; i >= position; i--)
{
list->data[i + 1] = list->data[i];
}
// 将数据赋给插入位置
list->data[position] = data;
// 下标加1
list->last++;
}
// 任意位置删除
void delete(seqlist* list, int position)
{
// 判断位置合法性
if (position < 0 || position > list->last)
{
printf("位置错误!\n");
}
// 将位置转换为下标
position -= 1;
// 删除操作:找到要删除的位置
for (int i = position + 1; i <= list->last; i++)
{
// 将要删除的位置后的每个元素往前移
list->data[i - 1] = list->data[i];
}
// 下标-1
list->last--;
}
// 任意位置修改
void modifyList(seqlist* list, int position, int data)
{
// 判断位置合法性
if (position < 0 || position > list->last)
{
printf("位置错误!\n");
}
// 修改操作:找到要修改的位置,进行修改
// 将位置转换为下标
position -= 1;
list->data[position] = data;
}
// 遍历
void printList(seqlist* list)
{
for (int i = 0; i < list->last; i++)
{
printf("%d ", list->data[i]);
}
printf("\n");
}
// 清空表
void noneList(seqlist* list)
{
list->last = -1;
}
// 查找数据,返回位置
int searchData(seqlist* list, int data)
{
// 遍历表,直到匹配到元素
for (int i = 0; i < list->last; i++)
{
if (list->data[i] == data)
{
return i + 1;
}
}
printf("没找到!\n");
}
int main(int argc, char const *argv[])
{
seqlist* list = initSeqList();
insertSeqList(list, 1, 1);
insertSeqList(list, 2, 3);
insertSeqList(list, 1, 5);
insertSeqList(list, 4, 7);
insertSeqList(list, 3, 9);
printList(list);
delete(list, 1);
delete(list, 4);
printList(list);
modifyList(list, 3, 8);
printList(list);
// noneList(list);
printList(list);
printf("%d在位置:%d\n", 8, searchData(list, 8));
return 0;
}
顺序表的操作合集
最新推荐文章于 2024-08-22 16:17:37 发布