//已知线性表A的长度为n, 试写出该线性表逆置的算法
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20
typedef struct
{
int data[MAXSIZE]; //存储顺序表中的元素
int len; //顺序表的表长
}SeqList; //顺序表类型
SeqList *Init_SeqList() //顺序表初始化
{
SeqList *L;
L = (SeqList *)malloc(sizeof(SeqList));
L->len = 0;
return L; //返回指向顺序表的指针
}
void CreatList(SeqList **L) //生成顺序表
{
int i, n;
printf("Input length of List: ");
scanf("%d", &n);
printf("Input element of List: \n");
for (i = 0; i< n; i++)
{
scanf("%d", &(*L)->data[i]);
}
(*L)->len = n;
}
void Coverts(SeqList *A) //将顺序表中的元素逆置
{
int i, n;
int x;
n = A->len; //n 为线性表*A 的长度
for (i = 0; i < n / 2; i++) //实现逆置
{
x = A->data[i];
A->data[i] = A->data[n-i-1];
A->data[n-i-1] = x;
}
}
void print(SeqList *L) //输出顺序表
{
int i;
for (i = 0; i < L->len; i++)
{
printf("%4d", L->data[i]);
}
printf("\n");
}
int main()
{
SeqList *A;
A = Init_SeqList(); //顺序表初始化
printf("Creat List A:\n");
CreatList(&A); //生成顺序表
printf("Output list A:\n");
print(A); //输出顺序表
printf("Covert list A:\n");
Coverts(A); //将顺序表中的元素逆置
printf("Output list A:\n");
print(A);
return 0;
}
10.7线性表逆置的算法
最新推荐文章于 2024-02-06 23:51:45 发布