当前位置:   article > 正文

顺序表的应用_顺序表a中前m个元素有序,后n个元素有序,设计一个算法,使得整个顺序表有序,要求算

顺序表a中前m个元素有序,后n个元素有序,设计一个算法,使得整个顺序表有序,要求算

1.顺序表A中前m个元素有序,后n个元素有序,设计一个算法,使得整个顺序表有序,要求算法空间复杂度为O(1)。

#include<stdio.h>

#include<malloc.h>

#include<stdbool.h>

#define maxsize 60

typedef char ElemType;

typedef struct {

    ElemType data[maxsize];

    int length;

}sqlist;

//建立

void creatlist(sqlist* L, ElemType a[], int n)

{

    int i;

    L = (sqlist*)malloc(sizeof(sqlist));

    for (i = 0; i < n; i++)

        L->data[i] = a[i];

    L->length = n;

}

//初始化

sqlist *initlist()

{

    sqlist* L;

    L = (sqlist*)malloc(sizeof(sqlist));

    L->length = 0;

    return L;

}

//插入

void charulist(sqlist* L)

{

   

        int i;

        printf("请输入第一段元素总数:");

        scanf("%d", &i);

        printf("你要录入的元素:");

        for (int j = 0; j < i; j++)

        {

            scanf(" %c", &L->data[j]);

            L->length++;

        }

   

   

}

//输出

void listOut(sqlist* L)

{

    int i;

    printf("顺序表:");

    for (i = 0; i < L->length; i++)

        printf("%c ", L->data[i]);

    printf("\n");

}

//交换

void swap(sqlist* L, int i, int j)

{

    int temp = L->data[i];

    L->data[i] = L->data[j];

    L->data[j] = temp;

}

//排序

void paixu(sqlist* L)

{

    if (L->length == 0)

    {

        printf("顺序表空!!\n");

    }

    for(int i=0;i<L->length;i++)

        for (int j = i + 1; j < L->length; j++) {

            if (L->data[i] > L->data[j])

            {

                swap(L, i, j);

            }

        }

}

//尾插

void weicha(sqlist* L)

{

    char data;

    scanf(" %c", &data);

        L->data[L->length]= data;

        L->length++;

       

    }

//销毁

void Destroylist(sqlist* L)

{

    free(L);

} 

(2)main函数代码

//主函数

int main()

{

    sqlist* L;

    L=initlist();

   

    charulist(L);

    int i,h;

    printf("请输入第二段元素总数:");

    scanf("%d", &i);

    printf("请输入你要的录入的元素:");

    for (int j = 0; j < i; j++)

    {

        weicha(L);

    }

    printf("请输入第三段元素总数:");

    scanf("%d", &h);

    printf("请输入你要的录入的元素:");

    for (int j = 0; j < h; j++)

    {

        weicha(L);

    }

          listOut(L);

    paixu(L);

    listOut(L);

    Destroylist(L);

    return 0;

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/829332
推荐阅读
相关标签
  

闽ICP备14008679号