6-1 顺序表的实现 || 6-2 两个有序链表序列的合并

本题要求实现六个函数,顺序表为整型数据,可实现输入、输出、取值、查找、插入、删除功能。输入样例与输出样例对应情况见下图。

无标题.jpg

//int GetElem(SqList L, int i, ElemType &e)  顺序表的取值
//判断i值是否合理,若不合理,返回0;[i-1]单元存储第i个数据元素; 返回1
int GetElem(SqList L, int i, ElemType &e)
{
    if(i < 1 || i > L.length) return 0;
    e = L.elem[i - 1];
    return 1;
}
//int LocateElem_Sq(SqList L, double e) 顺序表的查找
//查找成功,返回序号i+1;查找失败,返回0
int LocateElem_Sq(SqList L, double e)
{
    for(int i = 0 ; i < L.length ; i++)
    {
        if(e == L.elem[i])
            return i+1;
    }
    return 0;
}

//int ListInsert_Sq(SqList &L, int i, ElemType e)顺序表的插入
//判断i值,不合法返回0;当前存储空间已满,返回0;插入位置及之后的元素后移;将新元素e放入第i个位置;表长增1;返回1
int ListInsert_Sq(SqList &L, int i, ElemType e)
{
    if(i < 1 || i > L.length) return 0;
    if(L.length == MAXSIZE) return 0;

    for(int j = L.length ; j >= i-1 ;j--)
    {
        L.elem[j+1] = L.elem[j];
    }
    L.elem[i-1] = e;
    L.length++;
    return 1;
}
//int ListDelete_Sq(SqList &L, int i)顺序表的删除
//判断i值,不合法返回0;被删除元素之后的元素前移;表长减1;返回1
int ListDelete_Sq(SqList &L, int i)
{
    if(i < 1 || i > L.length) return 0;
    for(int j = i-1 ; j < L.length - 1 ;j++)
    {
        L.elem[j] = L.elem[j+1];
    }
    L.length--;
    return 1;

}
//void ListInput(SqList &L)顺序表数据的输入
//输入顺序表长度;依次输入数据;表长赋值
void ListInput(SqList &L)
{
   int s;
   cin>>s;
   for(int i = 0 ; i < s ; i++)
   {
       int t;
       cin>>t;
       L.elem[i] = t;
   }
   L.length = s;
}

//void ListOutput(SqList L)顺序表数据的输出
void ListOutput(SqList L)
{
    for(int i = 0 ; i < L.length ;i++)
    {
        cout<<L.elem[i]<<" ";
    }
    cout<<endl;
}

 

 

本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。

List Merge( List L1, List L2 )
{
    List L;
    List p;
    List q;
    List r;
    L = (List)malloc(sizeof(struct Node));
    p = L1->Next;
    q = L2->Next;
    L->Next = NULL;
    r = L;
    while(p != NULL && q != NULL )
    {
        if(p->Data < q->Data)
        {
            r ->Next = p;
            p = p->Next;
            r = r->Next;
        }
        else
        {
            r ->Next = q;
            q = q->Next;
            r = r->Next;
        }
    }
    
    if(p != NULL) r->Next = p;
    if(q != NULL) r->Next = q;
    
    L1->Next = NULL;
    L2->Next = NULL;
    return L;
}

 

posted @ 2022-10-24 23:48  旺旺大菠萝  阅读(121)  评论(0编辑  收藏  举报