数据结构(一)顺序表1:顺序存储的基本操作

线性表是一种最简单的线性结构。

线性表:n个类型相同的元素的有限集合。(每个数据之间存在着唯一的顺序关系)

线性表有两种存储结构:顺序存储结构和链式存储结构。


1.线性表的定义:

#include
#include
//#include

using namespace std;

#define MAXSIZE 100
//const int MAXSIZE=(100);
void Initlist(Sqlist &l);   //初始化线性表;
void Createlist(Sqlist &l); //创建线性表
bool Isempty(Sqlist l);    //判断线性表是否为空
void Insert_elem(Sqlist &l,int i,int e);   //在线性表的第i个位置插入元素es
void Delete_elem(Sqlist &l,int i,int *e);  //在线性表的第i个位置删除元素e
void Clearlist(Sqlist &l);  //清空线性表中元素
int Length(Sqlist l);       //求线性表的长度
int Getelem(Sqlist l,int i);  //求线性表第i个位置的元素
void Locatedelem(Sqlist l,int e,int *i);  //求元素e在线性表中的位置

typedef struct node{int *data;//储存空间基地址int length;//当前表长}Sqlist;

 
  

2.初始化线性表:

//初始化线性表
void Initlist(Sqlist &l) {
	//将线性表的表长置为0
	l.data=(int *)malloc(sizeof(int));
	if(!l.data)  exit (-2);  //储存空间分配失败
	l.length=0;    //将线性表的表长置为0
}


3.创建线性表:

//创建线性表
void Create(Sqlist &l) {
	//创建线性表
	int data;
	cin>>data;
	int i=0;
	while (data!=-1) {
		l.data[i]=data;
		cin>>data;
		i++;
	}
	l.length=i;
}

4.判断线性表是否为空:

//判断线性表是否为空
bool Isempty(Sqlist l) {
	//表长是否=0
	if(l.length==0)  return true;
    else return false;
}


5.判断线性表是否为满


//判断线性表是否为满
bool Isfull(Sqlist l) {
	//l.length>=MAXSIZE;
	if(l.length>=MAXSIZE)  return true;
	else  return true;
}



6.求线性表第i个位置的元素

//求线性表第i个位置的元素
int Getelem(Sqlist l,int i) {
	//第i个位置的元素=data[i-1]
	//判断i是否合法
	int e;
	if(i<1  ||  i>l.length)  exit(-2);
	return e=l.data[i--];
}


7.//求元素e在线性表中的位置

//求元素e在线性表中的位置
int Locatedelem(Sqlist l,int e) {
	//data[i]==e,是第i+1个位置
	for(int i=0;i

8.在线性表的第i个位置插入元素e

//在线性表的第i个位置插入元素e
void Insert_elem(Sqlist &l,int i,int e) {
	//data[i-1]=e,
	//从表尾到位置i的元素位置+1
	//判断i是否合法
	//判断线性表是否为满
	if(i<1  ||  i>l.length)  exit(-2);
	else if(l.length>=MAXSIZE)  exit(-2);
	else {
		l.data[i-1]=e;
		for(int j=l.length;j>=i;j--)
			l.data[j]=l.data[j-1];
		l.length++;
	}
}

9.在线性表的第i个位置删除元素e


//在线性表的第i个位置删除元素e
void Delete_elem(Sqlist &l,int i,int e) {
	//data[i-1]=e,
	//从位置i到表尾的元素位置-1
	//判断i是否合法
	//判断线性表是否为空
	if(i<1  ||  i>l.length)  exit(-2);
	else if(l.length==0)  exit(-2);
	else {
		e=l.data[i-1];
		for(int j=i;j<=l.length;j++)
			l.data[j-1]=l.data[j];
		l.length--;
	}
}

10.清空顺序表

//清空顺序表
void Clearlist(Sqlist &l) {
    l.length=0;
}

11.求顺序表的长度

//求顺序表的长度
int Length(Sqlist l) {
    return l.length;
}


12.输出顺序表中的元素  //遍历

//输出顺序表中的元素
void Printflist(Sqlist l) {
    int i=0;
    while(l.data[i]) {
        cout<

13.主函数:

int main () {
    Sqlist l;
    int e,i;
    Initlist(l);
    Create(l);
    cout<<"刚刚创建的顺序表为:";
    Printflist(l);
    cout<<"刚刚创建的顺序表长度为:";
    Length(l);
    cout<


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