问题:设置一个高效的算法,将顺序表的所有的元素逆置,要求空间复杂度为O(1)。
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#define Maxsize 50
typedef struct SqList{
int* data;
int length;
};
// ---------------------------- 初始化-----------------------------
bool InitList(struct SqList* L)
{
L->data=(int*)malloc(sizeof(int)*(Maxsize/2));
int i=0;
for(i=0;i<Maxsize/2;i++)
{
L->data[i]=rand()%100;
}
L->length=Maxsize/2;
return true;
}
void Reverse(struct SqList* L)
{
int temp=0;
int i=0 ;
for(i=0;i<(L->length)/2;i++)
{
// L->data[i]=i;
temp=L->data[i];
L->data[i]=L->data[(L->length)-i-1];
L->data[(L->length)-i-1]=temp;
}
}
void print(struct SqList *L)
{
int j=L->length;
int i=0;
for(i=0;i<j;i++)
{
printf("%d ",L->data[i]);
}
printf("\n");
}
int main()
{
//-------------------初始化顺序表--------------------
struct SqList L;
if(InitList(&L)==true)
{
printf("顺序表初始化成功!\n");
}
print(&L);
printf("\n\n");
Reverse(&L);
print(&L);
printf("\n\n");
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/10412.html