顺序表

来源:互联网 发布:小企业网络循环贷款 编辑:程序博客网 时间:2024/06/02 01:25

顺序表的一些简单操作

#include<iostream>#include<cstring>#include<cstdio>#include<string>#include<stdlib.h>#define length 100#define inlength 100using namespace std;typedef struct{    int *data;    int len;    int listsize;}sqlist;void inite(sqlist *L)//初始化{    L->data=(int *)malloc(length*sizeof(int));    if(L->data==0)//开辟空间失败    {        cout<<"Inite-False"<<endl;        return;    }    else    {        cout<<"Inite-OK"<<endl;        L->len=0;        L->listsize=inlength;        return;    }}void Insert(sqlist *L,int pos,int e)//插入{    int i;    if(pos<1||pos>L->len+1)//如果i的值不合法,则插入失败    {        cout<<"Insert-False";        return;    }    if(L->len>=L->listsize)//当前存储空间已满,增加分配    {        int *newbase;        newbase=(int *)realloc(L->data,(L->listsize+inlength)*sizeof(int));        if(!newbase)        {            cout<<"Insert-False"<<endl;//存储分配失败            return;        }        L->data=newbase;//新基址        L->listsize+=inlength;//增加存储容量    }    for(i=L->len-1;i>=pos-1;i--)        L->data[i+1]=L->data[i];//元素后移    L->data[pos-1]=e;//在第i个位置插入元素e    L->len++;//表长加1}void Print(sqlist *L)//输出顺序表{    int i;    for(i=0;i<=L->len-1;i++)        cout<<L->data[i]<<" ";    cout<<endl;}void Find(sqlist *L,int e)//查找{    int *p;    int i=1;    p=L->data;    while(i<=L->len&&(*p++)!=e)        i++;    if(i<=L->len)    {        cout<<"Find-OK"<<endl;        cout<<"The position is: "<<i<<endl;    }    else        cout<<"Find-False";}void Delete(sqlist *L,int pos)//删除{    int i;    if(pos<1||pos>L->len)//i值不合法,则删除失败    {        cout<<"ERROR--There is no value here"<<endl;        return;    }    int e=L->data[pos-1];//将被删除的元素存入e中    for(i=pos;i<=L->len-1;i++)        L->data[i-1]=L->data[i];//被删除元素之后的元素前移    L->len--;//表长减1    cout<<"Delete : "<<e<<endl;}int main(){    sqlist nod;    inite(&nod);    int n,i;    cin>>n;    for(i=1; i<=n; i++)    {        int x;        cin>>x;        Insert(&nod,i,x);    }    Print(&nod);    //int x;    //cin>>x;    //Find(&nod,x);    //Print(&nod);    //int delete_pos;    //cin>>delete_pos;    //Delete(&nod,delete_pos);    //Print(&nod);}
原创粉丝点击