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


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

    编译环境:VS2015

    题目:长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的元素。

    具体实现如下:

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #define initSize 50
     4 
     5 typedef int ElementType;
     6 typedef struct {
     7     ElementType *data;
     8     int length;
     9     int maxSize;
    10 }SeqList;
    11 
    12 //初始化线性表
    13 void InitList(SeqList &L) {
    14     L.data = (ElementType*)malloc(sizeof(ElementType)*initSize);
    15     L.length = 0;
    16     L.maxSize = initSize;
    17 }
    18 
    19 //创建线性表
    20 void CreateList(SeqList &L,int n) {
    21     L.length = n;
    22     for (int i = 0;i < L.length;i++) {
    23         scanf_s("%d",&(L.data[i]));
    24     }
    25 }
    26 
    27 //删除x
    28 void DeleteX(SeqList &L,int x) {
    29     int n=0;//记录不等于x的数的个数,初始化为0
    30     for (int i = 0;i < L.length;i++) {
    31         if (L.data[i] != x){
    32             L.data[n] = L.data[i];
    33             n++;
    34         }    
    35     }//相当于对原来顺序表的更新,祛除值等于x的元素
    36     L.length = n;
    37 }
    38 
    39 //显示
    40 void ShowList(SeqList L) {
    41     for (int i = 0;i < L.length;i++) {
    42         printf_s("%d ",L.data[i]);
    43     }
    44 }
    45 
    46 int main() {
    47     SeqList L;
    48     int length,x;
    49     InitList(L);
    50     printf_s("输入表的长度:");
    51     scanf_s("%d", &length);
    52     printf_s("
    输入初始值:");
    53     CreateList(L, length);
    54     printf_s("输入要删除的数字:");
    55     scanf_s("%d", &x);
    56     DeleteX(L,x);
    57     printf_s("
    删除后的顺序表的元素如下:");
    58     ShowList(L);
    59     printf_s("
    ");
    60     system("pause");
    61     return 0;
    62 }

    测试结果:

  • 相关阅读:
    scrapy练习1
    sys.path.append()加入当前目录为环境变量
    同济:003.映射与函数3
    1-4 无监督学习(Unsupervised Learning)
    1-3.监督学习(supervised learning)
    同济:002.映射与函数2
    github访问过慢解决
    LeetCode OJ:Contains Duplicate(是否包含重复)
    LeetCode OJ:Maximum Product Subarray(子数组最大乘积)
    LeetCode OJ:Valid Anagram(有效字谜问题)
  • 原文地址:https://www.cnblogs.com/abyss1114/p/7283493.html
Copyright © 2020-2023  润新知