王道考研数据结构顺序表相关例题习题代码

代码是自己写的。

我的顺序表是以1为开始的下标,和书上的不一样。其中习题部分的代码是我自己写的,和书中答案不太一样,比如习题第8题,觉得书上答案用三次倒置操作很智障,自己写的代码多消耗了点空间,但时间效率比答案好。

#include 
#define MAX_SIZE 50
using namespace std;
//顺序表
typedef int ElemType;
typedef struct SqList
{
    ElemType data[MAX_SIZE];
    int length;
} SqList;
//插入节点
bool ListInsert(SqList &L, int i, ElemType e)
{
    if(i<1||i>L.length+1)
        return false;
    if(L.length>=MAX_SIZE)
        return false;
    for(int j=L.length+1; j>i; j--)
    {
        L.data[j]=L.data[j-1];
    }
    L.data[i]=e;
    L.length++;
    return true;
}
//删除
bool ListDelete(SqList &L, int i, ElemType &e)
{
    if(i<1||i>L.length+1)
        return false;
    e=L.data[i];
    for(int j=i; jL.data[i])
        {
            Min=L.data[i];
            index=i;
        }
    }
    e=L.data[index];
    L.data[index]=L.data[L.length];
    L.length--;
    return true;
}
//应用题2表的逆置
bool Reverse(SqList &L)
{
    for(int i=1,j=L.length; it)
        {
            L.data[++k]=L.data[i];
        }
    }
    L.length=k;
}
//应用题5删除s和t之间的数(有序)
bool Deletest2(SqList &L,ElemType s,ElemType t)
{
    if(s>t)
        return false;
    int index1=1,index2=L.length;
    while(L.data[index1]t)
        index2--;
    int i,j;
    for(i=index1,j=index2+1; j<=L.length; j++,i++)
    {
        L.data[i]=L.data[j];
    }
    L.length=i-1;
    return true;
}
//应用题6删除重复的数
bool Unique(SqList &L)
{
    int k=0;
    for(int i=1; i<=L.length; i++)
    {
        if(L.data[i]!=L.data[i-1])
        {
            L.data[++k]=L.data[i];
        }
    }
    L.length=k;
    return true;
}
//应用题7合并顺序表
bool Merge(SqList &A, SqList &B, SqList &C)
{
    if(A.length+B.length>MAX_SIZE)
        return false;
    int i=1,j=1,k=0;
    while(i<=A.length&&j<=B.length)
    {
        if(A.data[i]

 

你可能感兴趣的:(考研数据结构)