顺序表—插入删除

插入操作—在顺序表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;
}
posted @ 2020-08-16 12:25  Cool-baby  阅读(50)  评论(0)    收藏  举报