考研C语言数据结构-顺序表(线性表的顺序存储实现)

#include <stdio.h>
#include <stdlib.h>

#define maxSize 10

// 定义顺序表存储结构数据类型
typedef struct {

	int data[maxSize];
	int length;
}SqList;

// 初始化顺序表
void initSqList(SqList &L) {

	L.length = 0;
}

// 插入操作
bool listInsert(SqList &L, int index, int e) {// i为位序90[start:1]

	if(L.length >= maxSize)
		return false;

	if(index < 1 || index > L.length + 1)
		return false;

	for(int i = L.length;i >= index;i--) {
	
		L.data[i] = L.data[i - 1];
	}

	L.data[index - 1] = e;

	L.length++;

	return true;
}

// 删除操作
bool listDelete(SqList &L, int index, int &e) {

	if(index < 1 || index > L.length)
		return false;

	e = L.data[index - 1];

	for(int i = index;i < L.length;i++) {
	
		L.data[i - 1] = L.data[i];
	}

	L.length--;

	return true;

}

// 按值查找
int locateElem(SqList L, int e) {

	for(int i = 0;i < L.length;i++) {
	
		if(L.data[i] == e) {
		
			return i + 1;// 返回的是位序
		}
	}

	return -1;// 查找失败
}

// 按位获取元素
int getElem(SqList L, int index) {// index为位序

	if(index < 1 || index > L.length)
		return -1;

	return L.data[index - 1];
}

// 顺序输出顺序表
void printSqList(SqList L) {

	for(int i = 0;i < L.length;i++) {
	
		printf("顺序表第%d个元素:%d\n", i + 1, L.data[i]);
	}
}

int main(void) {

	SqList L;

	initSqList(L);

	listInsert(L, 1, 1);
	listInsert(L, 2, 2);
	listInsert(L, 3, 3);
	listInsert(L, 4, 4);
	listInsert(L, 5, 5);

	int e = 0;

	printSqList(L);

	listDelete(L, 1, e);
	printf("删除第一个元素:%d\n", e);
	printSqList(L);

	listDelete(L, 4, e);
	printf("删除第四个元素:%d\n", e);
	printSqList(L);

	printf("元素4的位置:%d\n", locateElem(L, 4));
	printf("元素5的位置:%d\n", locateElem(L, 5));

	printf("获取第一个元素的值:%d\n", getElem(L, 1));
	printf("获取第三个元素的值:%d\n", getElem(L, 3));
	printf("获取第四个元素的值:%d\n", getElem(L, 4));

	system("pause");
	return 0;

}

顺序表总结:

posted @   dqlai  阅读(83)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示