思路:

  不要去考虑删除的字眼,要考虑如何进行保存非 x 的值

这里提供两种解法,殊途同归:

  1.将其中非 x 的元素统计并保存

  2.统计为 x 的元素个数,并将非 x 的元素保存

注意事项:

注意这里代码由于使用了引用(&),只能在 C++ 中编译通过

使用指针的时候一定要注意开辟空间,否则之后可能发现无法预知的错误

代码如下:

 #include <stdio.h>
#include <stdlib.h>
#define MaxSize 50
typedef int ElemType; typedef struct {
ElemType data[MaxSize];
int length;
} Sqlist; //将其中非 x 的元素统计并保存
void delnode1(Sqlist* &L, ElemType x) {
int k = , i;
for(i = ; i < L -> length; i++) {
if(L -> data[i] != x) {
L -> data[k] = L -> data[i];
k++;
}
}
L -> length = k;
} //统计为 x 的元素个数,并将非 x 的元素保存
void delnode2(Sqlist* &L, ElemType x) {
int k = , i;
for (i = ; i < L -> length; i++) {
if (L -> data[i] == x) {
k++;
} else {
L -> data[i - k] = L -> data[i];
}
}
L -> length -= k;
} void createList(Sqlist* &L, ElemType a[], int n) {
int i;
L = (Sqlist *)malloc(sizeof(Sqlist));
for (i = ; i < n; i++) {
L -> data[i] = a[i];
}
L -> length = n;
} void dispList(Sqlist *L) {
int i;
for (i = ; i < L -> length; i++) {
printf("%d ", L -> data[i]);
}
printf("\n");
} int main(int argc, char const *argv[]) {
Sqlist *L;
ElemType a[] = {, , , , , , , , , };
createList(L, a, );
printf("原始线性表:\n");
dispList(L);
delnode1(L, );
printf("删除 3 后:\n");
dispList(L);
delnode2(L, );
printf("删除 4 后:\n");
dispList(L);
return ;
}

轻点加号,代码即现

运行结果在这儿*^_^*

原始线性表:

删除  后:

删除  后:
9

顺序表删除值为 x 的元素的更多相关文章

  1. 数据结构顺序表删除所有特定元素x

    顺序表类定义: template<class T> class SeqList : { public: SeqList(int mSize); ~SeqList() { delete[] ...

  2. 顺序表添加与删除元素以及 php实现顺序表实例

    对顺序表的操作,添加与删除元素. 增加元素 如下图所示  对顺序列表 Li [1328,693,2529,254]  添加一个元素 111 ,有三种方式: a)尾部端插入元素,时间复杂度O(1);  ...

  3. 线性表之顺序表C++实现

    线性表之顺序表 一.头文件:SeqList.h //顺序线性表的头文件 #include<iostream> ; //定义顺序表SeqList的模板类 template<class ...

  4. SDUT OJ 顺序表应用2:多余元素删除之建表算法

    顺序表应用2:多余元素删除之建表算法 Time Limit: 3 ms Memory Limit: 600 KiB Submit Statistic Discuss Problem Descripti ...

  5. SDUT OJ 顺序表应用1:多余元素删除之移位算法

    顺序表应用1:多余元素删除之移位算法 Time Limit: 1000 ms Memory Limit: 650 KiB Submit Statistic Discuss Problem Descri ...

  6. 顺序表应用1:多余元素删除之移位算法(SDUT 3324)

    Problem Description 一个长度不超过10000数据的顺序表,可能存在着一些值相同的"多余"数据元素(类型为整型),编写一个程序将"多余"的数据 ...

  7. 顺序表应用2:多余元素删除之建表算法(SDUT 3325)

    题解: 每次询问一遍,如果已经存在就不用插入表中了. #include <stdio.h> #include <stdlib.h> #include <string.h& ...

  8. 顺序表C语言版

    #include <stdio.h> /* * 顺序表最多输入N个数 */ #define N 10 #define OK 1 #define ERROR -1 struct sequeu ...

  9. hrbustoj 1545:基础数据结构——顺序表(2)(数据结构,顺序表的实现及基本操作,入门题)

    基础数据结构——顺序表(2) Time Limit: 1000 MS    Memory Limit: 10240 K Total Submit: 355(143 users) Total Accep ...

随机推荐

  1. Windows 如何查看本地端口被进程占用的情况?

    1.查看端口占用情况: 1.开始--运行--cmd 进入命令提示符. 2. 输入netstat -ano(或netstat -nao) ,即可看到所有进程(这里显示进程的PID)占用端口的情况. 3. ...

  2. Elasticsearch 架构原理

    为什么要学习架构? Elasticsearch的一些架构设计,对我们做性能调优.故障处理,具有非常重要的影响.下面将从Elasticsearch的准实时索引的实现.自动发现.rounting和repl ...

  3. RunDll32.exe 详解及[Windows批处理]清除IE缓存

    Rundll32命令详解 文件作用:执行32位DLL文件中的内部函数 位置:X:(当前系统分区)\windows\system32 命令语法: Rundll32.exe DLLname,Functio ...

  4. C#图解教程读书笔记(第2章 C#编程概述)

    这章主要是一个对于C#程序的概括解释 和C/C++不同,不是用include声明引用的头文件,而是通过using的方式,声明引用的命名空间. 命名和C/C++类似,并且也是区分大小写的,这件事情在VB ...

  5. Codeforces Round #437 (Div. 2)[A、B、C、E]

    Codeforces Round #437 (Div. 2) codeforces 867 A. Between the Offices(水) 题意:已知白天所在地(晚上可能坐飞机飞往异地),问是否从 ...

  6. HDOJ 1528 Card Game Cheater

    版权声明:来自: 码代码的猿猿的AC之路 http://blog.csdn.net/ck_boss https://blog.csdn.net/u012797220/article/details/3 ...

  7. Adobe flash player 因过期而遭到阻止解决办法

    最近使用谷歌浏览器时总是提示Adobe flash player 因过期而遭到阻止,这让人很头痛,基本上就是打开一个网页就会弹出一个提示,下面是解决办法. 问题的截图界面: 解决方法:在chrome浏 ...

  8. UVa 10791 - Minimum Sum LCM(唯一分解定理)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  9. 小技巧:快速清除项目中的svn相关文件!

    习惯使用svn作为源代码管理工具,安全可靠 但是这些.svn字样的文件夹及文件也会随着源代码一同被deploy到Tomcat中,除了看着碍眼,也会占用Tomcat的性能 每次都是在项目部署目录里,搜索 ...

  10. django+ajax用FileResponse文件下载到浏览器过程中遇到的问题

    问题: 公司的需求是从mongodb中查找数据并下载回本地,但是在将文件从mongodb通过django服务端,然后从django服务端向浏览器下载文件.但是在下载的时候出了些问题.由于是用的ajax ...