数据结构.顺序表的插入~删除~查找

#include
using namespace std;
#include 
#include 
#define initsize 10

//定义一个顺序表 
typedef struct //定义一个动态顺序表的结构体,并起别名为sqlist 
{
	int *data; //因为是动态数组,所以先定一个指针,表示数组,后面malloc动态分配即可 
	int max;
	int length;
	
}sqlist;

//顺序表的初始化 
void initlist(sqlist &l)//初始化顺序表操作,并创建动态数组 
{
	l.data=(int*)malloc(sizeof(int)*initsize);
	l.length=0;
	l.max=initsize;
}

//顺序表插入  o(n) 
bool insertlist(sqlist &l,int i,int k)
{
	if(i<1||i>l.length+1)//元素必须挨着,若果插入位置超过当前长度,则无效 
		return false;
	if(l.length>=l.max+1)//如果当前长度超过最大容量,也无效 
		return false;
	int p;
	for(p=l.length;p>=i;p--)//从末尾,依次赋值位移 
		l.data[p]=l.data[p-1];
	l.data[i-1]=k;   //插入元素 
	l.length++;
}
//顺序表删除    o(n) 
bool deletelist(sqlist &l,int i,int k)
{
	if(i<1||i>l.length)
	return false;
	k=l.data[i-1];
	int m;
	for(m=i;m

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