数据结构---顺序表的实现(C语言版)

这里我们的目的是要简单地实现一下顺序表:初始化顺序表,插入5个数并输出,查找 2和 6是否在顺序表中,取出第3个数,最后删除第3个数

操作流程为:

1.首先开头预处理一下

#include
#define maxn 100
typedef int Status;
using namespace std;
typedef struct{
	int *elem;
	int length;
}SqList;

2.初始化

//初始化顺序表 
Status InitList(SqList &l){
	l.elem = new int(maxn);
	if(!l.elem)
		exit(-2);
	l.length = 0;
	return 1;
}

3.插入

//顺序表的插入(将要插入的新元素e放到第i个位置)
Status ListInsert(SqList &l,int i,int e){
	if(i<1||i>l.length+1)
		return 0;
	if(l.length==maxn)
		return 0;
	for(int j=l.length-1;j>=i-1;j--){
		l.elem[j+1]=l.elem[j];
	}
	l.elem[i-1]=e;
	l.length++;
	return 1;
} 

4.取值

//取出顺序表中的第i个值 (1<=i&&i<=l.length)
Status GetElem(SqList &l,int i,int &e){
	if(i<1||i>l.length)
		return 0;
	e = l.elem[i-1];
	return 1;
}

5.查找

//顺序表的查找(看顺序表内有没有要查找的值,若查找到则返回当前位置,否则返回 0) 
int LocateElem(SqList &l,int e){
	for(int i=0;i

6.删除

//顺序表的删除(删除顺序表中的第i个元素)
Status ListDelete(SqList &l,int i){
	if(i>l.length||i<1)
		return 0;
	for(int j=i;j<=l.length-1;j++){
		l.elem[j-1]=l.elem[j];
	}
	l.length--;
	return 1;
} 

7.输出函数:为了方便查看顺序表是否已经实现,这里我写了个输出函数,用来打印当前顺序表中的所有元素

//打印顺序表中的元素
Status PrintList(SqList &l){
	if(l.length==0)
		return 0;
	printf("当前顺序表中的元素依次为:");
	for(int i=0;i

至此,顺序表的功能就大差不差了,完整代码如下:

#include
#define maxn 100
typedef int Status;
using namespace std;
typedef struct{
	int *elem;
	int length;
}SqList;

//初始化顺序表 
Status InitList(SqList &l){
	l.elem = new int(maxn);
	if(!l.elem)
		exit(-2);
	l.length = 0;
	return 1;
}

//取出顺序表中的第i个值 (1<=i&&i<=l.length)
Status GetElem(SqList &l,int i,int &e){
	if(i<1||i>l.length)
		return 0;
	e = l.elem[i-1];
	return 1;
}

//顺序表的查找(看顺序表内有没有要查找的值,若查找到则返回当前位置,否则返回 0) 
int LocateElem(SqList &l,int e){
	for(int i=0;il.length+1)
		return 0;
	if(l.length==maxn)
		return 0;
	for(int j=l.length-1;j>=i-1;j--){
		l.elem[j+1]=l.elem[j];
	}
	l.elem[i-1]=e;
	l.length++;
	return 1;
} 

//顺序表的删除(删除顺序表中的第i个元素)
Status ListDelete(SqList &l,int i){
	if(i>l.length||i<1)
		return 0;
	for(int j=i;j<=l.length-1;j++){
		l.elem[j-1]=l.elem[j];
	}
	l.length--;
	return 1;
} 

//打印顺序表中的元素
Status PrintList(SqList &l){
	if(l.length==0)
		return 0;
	printf("当前顺序表中的元素依次为:");
	for(int i=0;i

 

你可能感兴趣的:(数据结构,数据结构)