【数据结构】顺序表的基本操作

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。【数据结构】顺序表的基本操作,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

顺序表

  1. 顺序表:线性表的顺序存储,用一段连续的存储单元来存放数据元素的。
  2. 用物理上的先后关系来表达逻辑上的前后关系
  3. 逻辑上连续的,物理上连续;物理上连续的,逻辑上也连续

顺序表的基本操作

  1. 初始化顺序表
//定义结构体
struct Line {
	int arrs[15];
	int length;
};

//初始化顺序表
void InitLine(struct Line *line){
	//表长度
	line->length = 0;
	printf("--->>>顺序表初始化完成,当前表长度为:%d\n", line->length);
}
  1. 判断表是否为空
//判断是否为空
void IsNull(struct Line *line){
	if (line->length!=0) {
		printf("--->>>此表非空,长度:%d\n", line->length);
	}
	else {
		printf("--->>>此表为空表,长度:%d\n", line->length);
	}
}
  1. 输入数据
//输入数据
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;
		}
	}
}
  1. 输出数据
//输出数据
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");
}
  1. 插入数据
//插入数据
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;
			}
		}
	
}
  1. 删除数据
//删除数据
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

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!