• 数据结构——线性表的顺序表示(2)


    题目来源于王道2018数据结构考研复习指导线性表的综合练习

    编译环境:VS2015

    题目:设计一个高效的算法,将顺序表的所有元素逆置,要求算法的空间复杂度为O(1)

    具体实现如下:

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #define initSize 50
     4 
     5 typedef int ElementType;
     6 
     7 typedef struct {
     8     ElementType *data;//顺序表的元素
     9     int length;//表长
    10     int maxSize;//最大容量
    11 }SeqList;
    12 
    13 //初始化线性表
    14 void InitList(SeqList &L) {
    15     L.data = (ElementType*)malloc(sizeof(ElementType)*initSize);
    16     L.length = 0;//置为空表
    17     L.maxSize = initSize;
    18 }
    19 
    20 //创建顺序表
    21 void CreateList(SeqList &L, int n) {
    22     L.length = n;
    23     for (int i = 0;i < n;i++) {
    24         scanf_s("%d", &(L.data[i]));    
    25     }
    26 }
    27 
    28 //元素逆置
    29 void Reverse(SeqList &L) {
    30     int temp;
    31     for (int i = 0;i < L.length/2;i++) {
    32         temp = L.data[i];
    33         L.data[i] = L.data[L.length - i - 1];
    34         L.data[L.length - i - 1] = temp;
    35     }
    36 }
    37 
    38 //显示
    39 void ShowList(SeqList L) {
    40     for (int i = 0;i < L.length;i++) {
    41         printf_s("%3d",L.data[i]);
    42     }
    43 }
    44 
    45 int main() {
    46     SeqList L;
    47     int length;
    48     InitList(L);
    49     printf_s("输入表的长度:");
    50     scanf_s("%d", &length);
    51     printf_s("
    输入初始值:");
    52     CreateList(L, length);
    53     Reverse(L);
    54     printf_s("
    逆置的顺序表的元素如下:");
    55     ShowList(L);
    56     printf_s("
    ");
    57     system("pause");
    58     return 0;
    59 }

    测试结果:

  • 相关阅读:
    [Luogu5042/UOJ #100][国家集训队互测2015]丢失的题面/ydc的题面
    [51nod1773]A国的贸易
    [GZOI2019&GXOI2019]省选GG记
    [51nod1659]数方块
    [51nod1052]最大M子段和
    [51nod1201]整数划分
    [51nod1084]矩阵取数问题 V2
    [51nod1020]逆序排列
    [BZOJ3000]Big Number
    [BZOJ1684][Usaco2005 Oct]Close Encounter
  • 原文地址:https://www.cnblogs.com/abyss1114/p/7283300.html
Copyright © 2020-2023  润新知