顺序表存储结构


//定义
#define MAXSIZE 100 //顺序表的容量

typedef char ElemType;

typedef struct SqList
{
	ElemType data[MAXSIZE]; //存放顺序表的元素
	int length; //顺序表的实际长度
}SqList;


//初始化
void initList(SqList &sq){
	sq.length = 0;
}

//求长度
int getLegth(SqList sq){
	return sq.length;
}

//按位查找
int getElem(SqList sq,int i,ElemType &e){
	if (i<1||i>sq.length){ //无效的i值
		return 0;
	}else{
		e=sq.data[i-1];
		return 1;
	}
}

//按值查找
int locate(SqList sq,ElemType x){
	int i=0;
	wheile(sq.data[i]!=x) //查找值为x的第一个结点
		i++;
		if (i>sq.length){
			return 0; //未找到
		}else{
			return (i+1);
		}
}

//插入元素
int insertElem(SqList &sq,ElemType x,int i){
	int j;
	if (i<1||i>sq.length+1) //无效的参数
		return 0;
	for(j=sq.length;j>i;j--){ 
		//将位置为i的结点及其之后的结点往后移
		sq.data[j]=sq.data[j-1];
	} 
	sq.data[i-1]=x; //在位置i处放入x
	sq.length++;
	return 1;
}

//删除元素
int deleteElem(SqList &sq,int i){
	int j;
	if(i<1||i>sq.length) //无效的参数
		return 0;
	for (j = i; j < sq.length; j++){
		//将位置为i结点之后的结点往前移
		sq.data[j-1]=sq.data[j];
	}
	sq.length--; //长度减1
	return 1;
}

//输出顺序表
void dispList(SqList sq){
	int i;
	for (i = 1; i < sq.length; i++)
	{
		printf("%c\n",sq.data[i-1]);
	}
}	

//main
void main(int argc, char const *argv[])
{
	int i;
	ElemType e;
	SqList sq;
	initList(sq);
	insertElem(sq,'a',1);
	insertElem(sq,'b',2);
	insertElem(sq,'c',3);
	insertElem(sq,'e',4);
	insertElem(sq,'d',5);
	insertElem(sq,'b',6);
	printf("顺序表:\n");
	dispList(sq);
	printf("长度:\n",getLegth(sq));
	i=3;
	getElem(sq,i,e);
	printf("第%d个元素:%c\n",i,e);
	e="a";
	printf("元素%c是\n", );

	return 0;
}

 

最后修改于 2019-11-11 19:09:50
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇