顺序表删除值为 x 的元素
思路:
不要去考虑删除的字眼,要考虑如何进行保存非 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 的元素的更多相关文章
- 数据结构顺序表删除所有特定元素x
顺序表类定义: template<class T> class SeqList : { public: SeqList(int mSize); ~SeqList() { delete[] ...
- 顺序表添加与删除元素以及 php实现顺序表实例
对顺序表的操作,添加与删除元素. 增加元素 如下图所示 对顺序列表 Li [1328,693,2529,254] 添加一个元素 111 ,有三种方式: a)尾部端插入元素,时间复杂度O(1); ...
- 线性表之顺序表C++实现
线性表之顺序表 一.头文件:SeqList.h //顺序线性表的头文件 #include<iostream> ; //定义顺序表SeqList的模板类 template<class ...
- SDUT OJ 顺序表应用2:多余元素删除之建表算法
顺序表应用2:多余元素删除之建表算法 Time Limit: 3 ms Memory Limit: 600 KiB Submit Statistic Discuss Problem Descripti ...
- SDUT OJ 顺序表应用1:多余元素删除之移位算法
顺序表应用1:多余元素删除之移位算法 Time Limit: 1000 ms Memory Limit: 650 KiB Submit Statistic Discuss Problem Descri ...
- 顺序表应用1:多余元素删除之移位算法(SDUT 3324)
Problem Description 一个长度不超过10000数据的顺序表,可能存在着一些值相同的"多余"数据元素(类型为整型),编写一个程序将"多余"的数据 ...
- 顺序表应用2:多余元素删除之建表算法(SDUT 3325)
题解: 每次询问一遍,如果已经存在就不用插入表中了. #include <stdio.h> #include <stdlib.h> #include <string.h& ...
- 顺序表C语言版
#include <stdio.h> /* * 顺序表最多输入N个数 */ #define N 10 #define OK 1 #define ERROR -1 struct sequeu ...
- hrbustoj 1545:基础数据结构——顺序表(2)(数据结构,顺序表的实现及基本操作,入门题)
基础数据结构——顺序表(2) Time Limit: 1000 MS Memory Limit: 10240 K Total Submit: 355(143 users) Total Accep ...
随机推荐
- July 19th 2017 Week 29th Wednesday
Rather than envy others, it is better to speed up their own pace. 与其羡慕他人,不如加快自己的脚步. The envy of othe ...
- RequireJS进阶-模块的优化及配置的详解
概述 关于RequireJS已经有很多文章介绍过了.这个工具可以将你的JavaScript代码轻易的分割成苦干个模块(module)并且保持你的代码模块化与易维护性.这样,你将获得一些具有互相依赖关系 ...
- C#学习——入门简介
# C#简介 #原版出处点击这里 C#是一个现代的.通用的.面向对象的编程语言,它是由微软(Microsoft)开发的,由Ecma和ISO核准认可的. C#是由Anders Heilsberg和他的团 ...
- 用eclipse pydev 创建一个新py文件时 文件的coding设置问题
问题: 当安装好eclipse和pydev后,创建一个project, 创建一个新的py文件,文件头都会自带中文时间.这样在编译的时候会报错. 解决办法之一: 通过设置,可以使新建的文件的文件头自动带 ...
- BZOJ2141:排队(分块,树状数组)
Description 排排坐,吃果果,生果甜嗦嗦,大家笑呵呵.你一个,我一个,大的分给你,小的留给我,吃完果果唱支歌,大家 乐和和.红星幼儿园的小朋友们排起了长长地队伍,准备吃果果.不过因为小朋友们 ...
- Yii2.0 请求
1.获取请求参数 $request = Yii::$app->request; $get = $request->get(); // 等价于:$get = $_GET; $id = $re ...
- [19/04/05-星期五] 多线程_Thread(线程、线条)、基本术语
一.基本概念 多线程是Java语言的重要特性,大量应用于网络编程.服务器端程序的开发,最常见的UI界面底层原理.操作系统底层原理都大量使用了多线程. 我们可以流畅的点击软件或者游戏中的各种按钮,其实, ...
- resnet densenet
1.resnet的skip connection是通过eltwise相加的 2.resnet做detection的时候是在conv4_x的最后一层(也就是stage4的最后一层),因为这个地方stri ...
- tensorflow的一些函数
1.tf.constant(value,dtype=None,shape=None,name='Const') 注意这个函数创造的是一个常数tensor,而不是一个具体的常数 value:即可以是li ...
- ui-element消息类型 MessageBox 弹框 type类型
MessageBox 弹框 type字段表明消息类型,可以为success,error,info和warning