删除线性表中所有值为x的元素

Posted 8023spz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除线性表中所有值为x的元素相关的知识,希望对你有一定的参考价值。

时间复杂度O(n),空间复杂度O(1)。

简单的问题两种不同的思路。

代码:

#include <stdio.h>
#define MAX 100
struct sqlist{
    int data[MAX];
    int length;
}s;
void input(sqlist *s) {
    printf("请输入元素个数:");
    scanf("%d",&s -> length);
    printf("请输入%d个元素:",s -> length);
    for(int i = 0;i < s -> length;i ++) {
        scanf("%d",&s -> data[i]);
    }
}
void print(sqlist s) {
    printf("%d
",s.length);
    for(int i = 0;i < s.length;i ++) {
        printf("%d ",s.data[i]);
    }
    putchar(
);
}
void del_1(sqlist *s,int x) {//记录不等于x的个数
    int k = 0;
    for(int i = 0;i < s -> length;i ++) {
        if(s -> data[i] != x) s -> data[k ++] = s -> data[i];
    }
    s -> length = k;
}
void del_2(sqlist *s,int x) {//记录等于x的个数
    int k = 0;
    for(int i = 0;i < s -> length;i ++) {
        if(s -> data[i] == x) k ++;
        else s -> data[i - k] = s -> data[i];
    }
    s -> length -= k;
}
int main() {
    input(&s);
    int x;
    printf("请输入x:");
    scanf("%d",&x);
    del_1(&s,x);
    print(s);
    return 0;
}

 

以上是关于删除线性表中所有值为x的元素的主要内容,如果未能解决你的问题,请参考以下文章

C语言使用二级指针借助递归工作栈删除单链表中所有值为x的元素

删除顺序表中所有值为x的数据元素

顺序表算法设计笔记

数据结构 已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度O(n)空间复杂度为O的算法,该算法删除线性表中所有值为item的数据元素。

数据结构 已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度O(n)空间复杂度为O的算法,该算法删除线性表中所有值为item的数据元素。

线性表练习之Example042-设计一个递归算法,删除不带头结点的单链表 L 中所有值为 x 的结点