• 顺序表练习


    目录

    1.SqList.h

    2.SqList.c

    3.Function.c


    练习: 建立一个顺序表L={21,23,14,5,56,17,31},然后在第3个位置插入元素68,最后依次显示当前线性表中的数据元素

    1.SqList.h

    引入头文件,#deifne定义,typedef定义,函数声明

    1. #define _CRT_SECURE_NO_WARNINGS 1
    2. #pragma once
    3. #include
    4. #include
    5. #define MaxSize 10//顺序表最大容量
    6. typedef int DataType;//方便使插入元素的类型与数组list中的类型相同
    7. typedef struct
    8. {
    9. DataType list[MaxSize];
    10. int size;//顺序表当前长度
    11. }SqList;
    12. void ListInitiate(SqList* L);//初始化顺序表
    13. bool ListInsert(SqList* L, int i, DataType a);//顺序表给第i个元素前插入元素
    14. int ListLength(SqList* L);//返回顺序表L的当前元素个数
    15. bool ListGet(SqList* L, int i, DataType* y);//从顺序表中取元素,带回y

    2.SqList.c

    顺序表的操作

    1. #include "SqList.h"
    2. void test()
    3. {
    4. DataType y = 0;
    5. int i = 0;
    6. SqList L;
    7. ListInitiate(&L);//初始化顺序表,i>=0
    8. //1
    9. DataType arr[] = {21,23,14,5,56,17,31};
    10. int sz = sizeof(arr) / sizeof(arr[0]);
    11. for (i = 0; i < sz; i++)
    12. {
    13. ListInsert(&L, i, arr[i]);//顺序表给第i个元素前插入元素
    14. }
    15. // 2
    16. //DataType n = 0;
    17. // for (i = 0; i < 7; i++)
    18. //{
    19. // scanf("%d", &n);
    20. // ListInsert(&L, i, n);//顺序表给第i个元素前插入元素
    21. //}
    22. ListInsert(&L, 2, (DataType)(68));
    23. for (i = 0; i < ListLength(&L); i++)//返回顺序表L的当前元素个数
    24. {
    25. ListGet(&L, i, &y);//从顺序表中取元素,带回y
    26. printf("%d ", y);
    27. }
    28. }
    29. int main()
    30. {
    31. test();
    32. return 0;
    33. }

    3.Function.c

    顺序表函数具体实现

    1. #include "SqList.h"
    2. void ListInitiate(SqList* L)//初始化顺序表
    3. {
    4. for (int i = 0; i < MaxSize; i++)
    5. {
    6. L->list[i] = 0;
    7. }
    8. L->size = 0;
    9. }
    10. bool ListInsert(SqList* L, int i, DataType a)//顺序表给第i个元素前插入元素
    11. {
    12. if (i < 0 || i > L->size)
    13. {
    14. printf("参数i不合法!\n");
    15. return false;
    16. }
    17. else if (L->size >= MaxSize)
    18. {
    19. printf("顺序表已满无法插入!\n");
    20. return false;
    21. }
    22. else
    23. {
    24. for (int j = L->size; j > i; j--)
    25. {
    26. L->list[j] = L->list[j - 1];
    27. }
    28. L->list[i] = a;
    29. L->size++;
    30. return true;
    31. }
    32. }
    33. int ListLength(SqList* L)//返回顺序表L的当前元素个数
    34. {
    35. return L->size;
    36. }
    37. bool ListGet(SqList* L, int i, DataType* y)
    38. {
    39. if (i < 0 || i >= L->size)
    40. {
    41. printf("参数i不合法!\n");
    42. return false;
    43. }
    44. else
    45. {
    46. *y = L->list[i];
    47. return true;
    48. }
    49. }

  • 相关阅读:
    持续集成/持续部署(2)Jenkins & SonarQube
    qdockwidget隐藏标题栏导致无法拖动问题
    2023年中国半导体IP行业发展概况及趋势分析:半导体IP的市场空间广阔[图]
    【Nginx26】Nginx学习:日志与镜像流量复制
    Windows内核--CreateProcess的内核实现 (3)
    [5]http1、2、3的区别
    基于nodejs+vue的读书会网站
    第八章《Java高级语法》第1节:数制及数制间的转换
    React(12)-react的生命周期(important)没写完
    MDK(Keil)的MAP文件都记录了啥
  • 原文地址:https://blog.csdn.net/2302_80310672/article/details/137936912