1xcb xbxczbzxc

这段代码展示了如何使用C++实现一个静态线性表,包括初始化、查找、插入和删除元素的功能。程序首先创建一个空的线性表,接着读取用户输入的元素进行插入,然后查找指定元素并输出其位置,最后执行删除操作并插入0到指定位置。
摘要由CSDN通过智能技术生成

#include <iostream>

#include <stdlib.h>

#include <stdio.h>

using namespace std;

#define MAXSIZE 5

#define ERROR -1

typedef int ElementType;

typedef struct LNode {

    ElementType *Data;

    int Last;  /* 保存线性表中最后一个元素所在的位置 */

 int length;

}SqList;

bool MakeEmpty(SqList &L);

int Find( SqList L, ElementType X );

bool Insert( SqList &L, ElementType X, int P );

bool Delete( SqList &L, int P );

int main()

{

    SqList L;

    ElementType X;

int length;

    int P,j;

    int N;

    if (MakeEmpty(L)==false) return 0;

    cin>>N;

    while ( N-- ) {

        cin>>X;

        if ( Insert(L, X, 0)==false )

            cout<<" Insertion Error: "<<X<<" is not in."<<endl;

    }

    cin>>N;

    while ( N-- ) {

        cin>>X;

        P = Find(L, X);

        if ( P == ERROR )

            cout<<"Finding Error: "<<X<<" is not in."<<endl;

        else

            cout<<X<<" is at position "<<P<<"."<<endl;

    }

    cin>>N;

    while ( N-- ) {

        cin>>P;

        if ( Delete(L, P)==false )

            cout<<" Deletion Error."<<endl;

        if ( Insert(L, 0, P)==false )

            cout<<" Insertion Error: 0 is not in."<<endl;

    }

    return 0;

}

bool MakeEmpty(SqList &L)

{

L.Data = (ElementType *)malloc(MAXSIZE*sizeof(ElementType));

if(L.Data == NULL)  return false;

L.length=-1;

return true;

}

int Find( SqList L, ElementType X )

{

int i;

for(i=0;i<=L.length;i++)

 if(L.Data[i]==X) return i;

   return ERROR;

}

bool Insert( SqList &L, ElementType X, int P )

{


if(L.length+1==MAXSIZE)

{

cout<<"FULL";

return false;

}


int j;

if((P<0)||(P>L.length+1) )

{

cout<<"ILLEGAL POSITION";


return false;


}


if(P == 0) {

    for(int i = L.length; i >= 0; i--) {

        L.Data[i+1] = L.Data[i];

    }

    L.Data[0] = X;

    L.length++;

    return true;

}

if(P == L.length) {

    L.Data[L.length+1] = X;

    L.length++;

    return true;

}

for(j=L.length;j>=P;j--)

L.Data[j+1]=L.Data[j];

L.Data[P]=X;


++L.length;

return true;

}

bool Delete( SqList &L, int P )
{


if((P<0)||(P>L.length)){

cout<<"POSITION "<<P<<" EMPTY";


return false;
}


for(int j=P;j<=L.length-1;j++)

L.Data[j]=L.Data[j+1];

--L.length;

return true;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值