NOTICE: 本篇代码是按照源码的书写顺序所写,复制之后可直接运行。
环境: vscode
题目:
试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1, a2,..., an)逆置为(an, an-1, ..., a1)
分析:
该题有两个点必须注意:1.是顺序表不是单链表;2.利用原表的存储空间实现逆置
利用原表的存储空间就意味着不能再创建一个表,将原表的数据元素插入新的表中。
代码:
创建顺序表:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define LISTINCREMENT 2
#define initsize 10
typedef int ElemType;
typedef int Status;
typedef struct
{
ElemType *elem;
int length;
int listsize;
}SqList;
Status CreateList(SqList &L, int n)
{
ElemType *p;
L.elem = (ElemType *)malloc(initsize * sizeof(ElemType));
if(!L.elem)
printf("\n分配失败\n");
printf("请依次输入顺序表的数据元素:\n");
for(p=L.elem; p< L.elem+n; p++)
scanf("%d ", p);
L.length