顺序表—插入删除
插入操作—在顺序表L的第i(1<=i<=L.length+1)个位置插入新元素e。
时间复杂的为O(n)。
删除操作—删除顺序表L的第i(1<=I<=l.length)个位置的元素,并返回true。
时间复杂度为O(n)。
#include <iostream>
#include<stdlib.h>
#define initsize 10
using namespace std;
typedef struct{
int *data;
int length;
int maxsize;
}sqlist;
void initlist(sqlist &l) //初始化表
{
l.data=(int *)malloc(initsize*sizeof(int));
l.length=0;
l.maxsize=initsize;
}
bool fuzhilist(sqlist &l,int s) //赋初始值
{
if(s>l.maxsize)
return 0;
for(int i=0;i<s;i++)
{
l.data[i]=i+1;
l.length++;
}
return 1;
}
void printlist(sqlist l) //打印表
{
for(int i=0;i<l.length;i++)
cout<<"number "<<i+1<<" is "<<l.data[i]<<endl;
}
bool listinsert(sqlist &l,int i,int e) //插入元素
{
if(i<1||i>l.length+1)
return 0;
for(int j=l.length;j>=i;j--)
{
l.data[j]=l.data[j-1];
}
l.data[i-1]=e;
l.length++;
return 1;
}
bool listdelect(sqlist &l,int i,int &e) //删除元素
{
if(i<1||i>l.length)
return 0;
e=l.data[i-1];
for(int j=i;j<l.length;j++)
{
l.data[j-1]=l.data[j];
}
l.length--;
return 1;
}
int main() {
sqlist l;
int e = -1;
initlist(l);
cout<<"first\n";
fuzhilist(l,5);
printlist(l);
cout<<"second\n";
if(listinsert(l,1,0))
cout<<"list insert over"<<endl;
else
cout<<"error"<<endl;
printlist(l);
cout<<"third\n";
if(listdelect(l,8,e))
{
cout<<"delete over ,delete data is "<<e<<endl;
}
else
cout<<"error"<<endl;
printlist(l);
cout << "over\n";
return 0;
}
作者:Cool baby
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

浙公网安备 33010602011771号