ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构 | 顺序表

2022-06-11 14:31:46  阅读:134  来源: 互联网

标签:顺序 return int elem length SqList 数据结构


数据结构 | 顺序表

最近在复习数据结构,就准备把书上的代码都实现一遍。
image

/*
author: Mz1
mzi_mzi@163.com
date: 2022.6.11 

*/

#include "mzdatastruct.h"

// 用于测试数据结构 
typedef int ElemType;

// 存储结构
#define MAXSIZE 100
typedef struct{
	ElemType* elem;         // 存储空间的基地址
	int length;             // 当前长度 
}SqList;                    // 顺序表结构类型为Sqlist 



// 顺序表的初始化
Status InitList(SqList &L){
	// 构造一个空的顺序表L
	L.elem = new ElemType[MAXSIZE];          // 为顺序表分配堆空间 
	if(!L.elem) exit(OVERFLOW);             // 存储分配失败退出 
	L.length = 0;
	return OK; 
}

// 顺序表取值
Status GetElem(SqList L, int i, ElemType &e){
	if (i<1||i>L.length) return ERROR;
	e = L.elem[i-1];              // 数据结构的反人类写法index从1开始 
	return OK;
} 

// 顺序表查找
int LocateElem(SqList L, ElemType e){
	int i;
	for (i = 0; i < L.length; i++){
		if (L.elem[i] == e) return i+1;        // 反人类写法下标从1开始 
	}
	return 0;             // 查找失败 
} 

// 顺序表插入
Status ListInsert(SqList &L, int i, ElemType e){
	// 在顺序表第i个位置插入新的元素e,i的合法范围是1<=i<=L.length+1
	int j;
	if ((i<1)||(i>L.length+1)) return ERROR;    // i值不合法
	if (L.length == MAXSIZE) return ERROR;    // 存储空间满了
	for  (j = L.length-1; j>=i-1; j --) L.elem[j+1] = L.elem[j];          // 将插入位置之后的元素向后移动 
	L.elem[i-1] = e;
	++L.length;
	return OK;
} 

// 顺序表删除
Status ListDelete(SqList &L, int i){
	// 在顺序表中删除第i个元素,合法范围如下
	int j;
	if ((i<1)||(i>L.length)) return ERROR;
	for (j = i; j<=L.length-1; j ++){
		L.elem[j-1] = L.elem[j];
	} 
	--L.length;
	return OK;
} 

// 输出线性表
// @Mz1
void PrintList(SqList L){
	int i;
	printf("[");
	for (i = 0; i < L.length; i ++){
		printf(" %d,", L.elem[i]);
	}
	printf("] \n");
} 

int main(){
	int i; int e;
	SqList L;
	InitList(L);   // 初始化
	for (i = 1; i <= 10; i ++){        // 向表中插入数据
		scanf("%d", &e);
		ListInsert(L, i, e); 
		PrintList(L);
	}
	scanf("%d", &e);
	printf("Locate: %d \n", LocateElem(L, e));
	
	scanf("%d", &i);
	GetElem(L,i, e);
	printf("Delete: index %d: %d \n", i, e);
	ListDelete(L, i);
	PrintList(L);
	
	
	
	return 0;	
}

标签:顺序,return,int,elem,length,SqList,数据结构
来源: https://www.cnblogs.com/Mz1-rc/p/16365837.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有