题目:
代码:
#include<iostream>
using namespace std;
typedef struct SList
{
char* data;
int size;
int capacity;
}SL;//建立一个动态顺序表结构体
void SLInit(SL* ps)
{
ps->data = NULL;
ps->size = ps->capacity = 0;
}//初始化动态顺序表
void SLCreate(SL* ps)
{
int n = 0;
cin >> n;
char x = 0;
for (int i = 0; i < n; i++)
{
if (ps->size == ps->capacity)//当size等于容量时就扩容
{
int newCapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;
char* tmp = (char*)realloc(ps->data, sizeof(char)*newCapacity);
if (tmp == NULL)
{
exit(-1);
}
ps->data = tmp;
ps->capacity = newCapacity;
}
cin >> x;
ps->data[i] = x;
ps->size++;
}
}
void SLReverse(SL* ps)//逆置
{
int i = 0;
int n = ps->size - 1;
while (i <= n)
{
swap(ps->data[i], ps->data[n]);//C++库函数有专门的swap供使用直接调用即可
i++;
n--;
}
}
void SLPrint(SL* ps)//打印
{
for (int i = 0; i < ps->size; i++)
{
printf("%c ", ps->data[i]);
}
}
int main()
{
SL p;
SLInit(&p);
SLCreate(&p);
SLReverse(&p);
SLPrint(&p);
return 0;
}