顺序表
- 顺序表:线性表的顺序存储,用一段连续的存储单元来存放数据元素的。
- 用物理上的先后关系来表达逻辑上的前后关系
- 逻辑上连续的,物理上连续;物理上连续的,逻辑上也连续
顺序表的基本操作
- 初始化顺序表
//定义结构体
struct Line {
int arrs[15];
int length;
};
//初始化顺序表
void InitLine(struct Line *line){
//表长度
line->length = 0;
printf("--->>>顺序表初始化完成,当前表长度为:%d\n", line->length);
}
- 判断表是否为空
//判断是否为空
void IsNull(struct Line *line){
if (line->length!=0) {
printf("--->>>此表非空,长度:%d\n", line->length);
}
else {
printf("--->>>此表为空表,长度:%d\n", line->length);
}
}
- 输入数据
//输入数据
void Input(struct Line *line) {
while (1) {
int inputData;
if (line->length<15) {
printf("--->>>请输入数据,仅支持int类型(输入0结束):");
scanf_s("%d", &inputData);
if (inputData == 0) {
printf("--->>>输入结束\n");
IsNull(line);
Output(line);
break;
}
line->arrs[line->length] = inputData;
line->length++;
}else {
printf("--->>>输入结束,容量已满\n");
IsNull(line);
Output(line);
break;
}
}
}
- 输出数据
//输出数据
void Output(struct Line* line) {
printf("--->>>顺序表中的数据为:\n");
printf("--->>> ");
if (line->length == 0) {
printf("无数据");
}
else {
for (int i = 0; i < line->length; i++) {
printf(" %d ", line->arrs[i]);
}
}
printf("\n");
}
- 插入数据
//插入数据
void Insert(struct Line *line) {
IsNull(line);
Output(line);
while (1) {
if (line->length != 15) {
int index, insertData;
printf("--->>>请选择要插入的位置{0-%d (-1退出)}:", line->length);
scanf_s("%d", &index);
if (index == -1) {
printf("--->>>已退出\n");
break;
}else {
if (index < 0 || index > line->length) {
printf("--->>>位置不合法,您可以输入(0-%d)\n", line->length);
}else {
int temporary = line->length;
printf("--->>>请输入插入的值,仅支持int类型:");
scanf_s("%d", &insertData);
if (temporary != 14) {
for (int i = line->length; i >= index; i--) {
line->arrs[i + 1] = line->arrs[i];
}
}
line->arrs[index] = insertData;
line->length++;
if (temporary < line->length) {
printf("--->>>插入成功\n");
}
else {
printf("--->>>插入失败\n");
break;
}
}
}
}else {
printf("--->>>容量已满,不允许插入\n");
break;
}
}
}
- 删除数据
//删除数据
void Delete(struct Line *line) {
while (1) {
if (line->length != 0) {
int index,tempLength;
tempLength = line->length;
printf("--->>>请输入要删除的位置{0-%d (-1退出)}:",line->length - 1);
scanf_s("%d",&index);
if (index == -1) {
printf("--->>>已退出\n");
break;
}
if (index < 0 || index >= line->length) {
printf("--->>>删除位置不合法,您可以输入(0-%d)\n", line->length - 1);
}else {
for (int i = index; i < line->length; i++) {
line->arrs[i] = line->arrs[i + 1];
}
line->length--;
if (tempLength >= line->length) {
printf("--->>>删除成功\n");
IsNull(line);
Output(line);
}
else {
printf("--->>>删除失败\n");
break;
}
}
}else {
printf("--->>>没有删除对象\n");
break;
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/204357.html