赞
踩
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;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。