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