顺序表的创建;往顺序表的指定位置插入元素;从顺序表的指定位置删除元素

顺序表的存储结构如下:

typedef struct
{
    ElemType *elem;

    int length;

    int listsize;

}SqList;

顺序表的初始化如下:

void InitList_Sq(SqList &L)
{
    //构造一个空的线性表L

    L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));

    //LIST_INIT_SIZE表示顺序表所能容纳元素的个数

    if(!L.elem)
    {
        exit(1); //存储分配失败
    }
    L.length = 0;   //空表长度为0

    L.listsize = LIST_INIT_SIZE;    //初始存储容量

}

创建顺序表如下:根据提示输入要创建的顺序表的元素个数,再根据提示输入每个元素的值。

void Creat_Sq(SqList &L)
{
    int i,n;

    cout<<"请输入顺序表的元素个数:";

    cin>>n;

    for(i=0;i>L.elem[i];

        L.length++;
    }
}

输出顺序表中的元素:

void Show_Sq(SqList L)
{
    for(int i=0;i

向顺序表的指定位置插入元素:

void ListInsert_Sq(SqList &L,int i,ElemType e)
{
    if(i<1||i>L.length+1)
    {
        cout<<"i值不合法"<=L.listsize)
    {
       newbase = (ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));

        if(!newbase)exit(OVERFLOW);

        L.elem = newbase;

        L.listsize += LISTINCREMENT;
    }

    q = &(L.elem[i-1]);

    for(p = &(L.elem[L.length-1]);p>=q;--p)
    {
        *(p+1) = *p;
    }

    *q = e;

    ++L.length;
}

删除顺序表指定位置元素:

void ListDel_Sq(SqList &L,int i,ElemType e)
{
    if(i<1||i>L.length+1)
    {
        cout<<"i值不合法"<

更新顺序表指定位置元素的值: 

void ListUpdate_Sq(SqList &L,int i,ElemType e)
{
    if(i<1||i>L.length+1)
    {
        cout<<"i值不合法"<

 完整版代码如下:注意函数返回值有做修改


#include 

#include 

#include 

using namespace std;

typedef int ElemType;

typedef int Status;

#define OK 1

#define ERROR 0

#define OVERFLOW -2

#define LIST_INIT_SIZE 100

#define LISTINCREMENT 10

ElemType * newbase,*p,*q;

//顺序表的结构描述

typedef struct{

    ElemType *elem;

    int length;

    int listsize;

}SqList;

//顺序表的初始化

Status InitList_Sq(SqList &L){

    //构造一个空的线性表L

    L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));

    if(!L.elem)exit(OVERFLOW); //存储分配失败

    L.length = 0;   //空表长度为0

    L.listsize = LIST_INIT_SIZE;    //初始存储容量

    return OK;

}//InitList_Sq

//顺序表的建立

void Creat_Sq(SqList &L){

    int i,n;

    cout<<"请输入顺序表的元素个数:";

    cin>>n;

    for(i=0;i>L.elem[i];

        L.length++;

    }

}

//顺序表的显示

void Show_Sq(SqList L){

    for(int i=0;iL.length+1){

        cout<<"i值不合法"<=L.listsize){

        newbase = (ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));

        if(!newbase)exit(OVERFLOW);

        L.elem = newbase;

        L.listsize += LISTINCREMENT;

    }

    q = &(L.elem[i-1]);

    for(p = &(L.elem[L.length-1]);p>=q;--p){

        *(p+1) = *p;

    }

    *q = e;

    ++L.length;

    return OK;

}

//顺序表的删除

Status ListDel_Sq(SqList &L,int i,ElemType e){

    if(i<1||i>L.length+1){

        cout<<"i值不合法"<L.length+1){

        cout<<"i值不合法"<= 0&&a <= L.length -1)

        return a + 1;//如果a的值满足要求,则返回a

    else

        return ERROR;//如果a不满足,则返回错误。

}



int GetElem_Sq(SqList L,int i)

{  if(i>L.length||i<=0)
      
	cout<<"输入非法"<>num;

        if(num>=1&&num<=7){

            flag=false;

        }else{

            cout<<"输入非法"<>i;
            cout<<"请输入要插入的数:";
            cin>>e;
            ListInsert_Sq(L,i,e);
        }break;

        case 2 :
		{
            cout<<"请输入要删除的位置:";
            cin>>i;
            ListDel_Sq(L,i,e);
        }break;
        case 3 :
		{
            cout<<"请输入要修改的位置:";
            cin>>i;
            cout<<"请输入修改成的数:";
            cin>>e;
            ListUpdate_Sq(L,i,e);
        }break;
        case 4 :
		{
			cout<<"请输入元素值:";
			cin>>i;
            cout<>i;
            cout<< GetElem_Sq(L,i)<

 

你可能感兴趣的:(顺序表的创建;往顺序表的指定位置插入元素;从顺序表的指定位置删除元素)