第3周实践项目4 -顺序表的应用 删除顺序表中元素为x的值
/*
copyright (t) 2017,烟台大学计算机学院
*All rights reserved.
*文件名称:1.cpp
*作者:邵雪源
*完成日期:2017年9月14日
*问题描述:删除元素在x,的所有元素,要求算法的时间按复杂度为o(n),空间复杂度为o(1)
*版本号:v1.0
*/
main.cpp
#include "list.h"
#include <stdio.h>
void delnode1(SqList *&L,ElemType x)
{int i;ElemType e;while((i=LocateElem(L,x))>0){ListDelete(L, i, e);}
}
//用main写测试代码
int main()
{SqList *sq;ElemType a[10]= {5,8,7,0,2,4,9,6,7,3};CreateList(sq, a, 10);printf("删除前 ");DispList(sq);delnode1(sq, 7);printf("删除后 ");DispList(sq);return 0;
}
list.h
#ifndef LIST_H_INCLUDED
#define LIST_H_INCLUDED
#define MaxSize 50
typedef int ElemType;
typedef struct
{ElemType data[MaxSize];int length;
} SqList;
void CreateList(SqList *&L, ElemType a[], int n);//用数组创建线性表
bool ListEmpty(SqList *L);//判定是否为空表ListEmpty(L)
void DispList(SqList *L);//输出线性表DispList(L)
bool GetElem(SqList *L,int i,ElemType &e);//求某个数据元素值GetElem(L,i,e)
int LocateElem(SqList *L, ElemType e);//按元素值查找LocateElem(L,e)
bool ListDelete(SqList *&L,int i,ElemType &e);//删除数据元素ListDelete(L,i,e)#endif // LIST_H_INCLUDED
#endif
list.cpp
#include <stdio.h>
#include <malloc.h>
#include "list.h"
//用数组创建线性表
void CreateList(SqList *&L, ElemType a[], int n)
{int i;L=(SqList *)malloc(sizeof(SqList));for (i=0; i<n; i++)L->data[i]=a[i];L->length=n;
}
//判定是否为空表ListEmpty(L)
bool ListEmpty(SqList *L)
{return(L->length==0);
}
//输出线性表DispList(L)
void DispList(SqList *L)
{int i;if (ListEmpty(L)) return;for (i=0; i<L->length; i++)printf("%d ",L->data[i]);printf("\n");
}
//求某个数据元素值GetElem(L,i,e)
bool GetElem(SqList *L,int i,ElemType &e)
{if (i<1 || i>L->length) return false;e=L->data[i-1];return true;
}
//按元素值查找LocateElem(L,e)
int LocateElem(SqList *L, ElemType e)
{int i=0;while (i<L->length && L->data[i]!=e) i++;if (i>=L->length) return 0;else return i+1;
}
//删除数据元素ListDelete(L,i,e)
bool ListDelete(SqList *&L,int i,ElemType &e)
{int j;if (i<1 || i>L->length) //参数错误时返回falsereturn false;i--; //将顺序表逻辑序号转化为物理序号e=L->data[i];for (j=i; j<L->length-1; j++) //将data[i..n-1]元素前移L->data[j]=L->data[j+1];L->length--; //顺序表长度减1return true; //成功删除返回true
}
解法二:
#include "list.h"
#include <stdio.h>
void delnode2(SqList *&L,ElemType x)
{int k=0,i; //k记录非x的元素个数for (i=0; i<L->length; i++)if (L->data[i]!=x){L->data[k]=L->data[i];k++;}L->length=k;
}
//用main写测试代码
int main()
{SqList *sq;ElemType a[10]= {5,8,7,0,2,4,9,6,7,3};CreateList(sq, a, 10);printf("删除前 ");DispList(sq);delnode2(sq, 7);printf("删除后 ");DispList(sq);return 0;
}
第3周实践项目4 -顺序表的应用 删除顺序表中元素为x的值相关推荐
- 第7周实践项目1.1 环形队列中用队尾和队的元素个数来实现队列的算法库
typedef struct {Elemtype date[maxsize];int front;int count; }sqqueue; void initqueue (sqqueue *& ...
- oracle删除库里的所有表,清空mysql指定库里全部表数据-自动删除所有表,有外键约束的表优先删除...
清空mysql指定库里所有表数据-自动删除所有表,有外键约束的表优先删除 由于要清空数据库数据 ,手动非常麻烦.网上找了一下,有一个Oracle的,参照它,在其上修改一下用于Mysql,把代码奉献如下 ...
- 【python之操作注册表】Python删除注册表节点下的值
[python操作注册表]Python删除注册表节点下的值 背景 本来是别的平台的一个bug,以为自己去沟通然后让他们修就好了,结果又是这样别人的坑自己来填.主要是在卸载的时候要删除注册表下的所有节点 ...
- 第3周实践项目1 顺序表的基本运算
/*copyright (t) 2017,烟台大学计算机学院 *All rights reserved. *文件名称:1.cpp *作者:邵雪源 *完成日期:2017年9月19日 *版本号:v1.0 ...
- 第八周实践项目9 算法库——广义表
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目9- *作 者:邵雪源 *完成日期:2017年12月14日 *版 ...
- 第七周实践项目2.3 顺序环形队列
下图是数据存储结构设计及各种操作实现的要点: /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目2.3- *作 者 ...
- 第八周实践项目6 猴子选大王(数组版)
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目6-一群猴子,编号是1,2,3 -m,这群猴子(m个)按照1-m ...
- 第五周实践项目7 后缀表达式
基于栈结构,将中缀表达式转换为后缀表达式的算法步骤是: 初始化运算符栈op; 将'='进栈; 从exp读取字符ch; while (ch!='\0') { if (ch不为运算符) 将后续的 ...
- 第七周实践项目6 停车场模拟(栈和队列综合)
设停车场是一个可停放n辆汽车的狭长死胡同,南边封口,汽车只能从北边进出(这样的停车场世间少有).汽车在停车场内按车辆到达时间的先后顺序,最先到达的第一辆车停放在车场的最南端,依次向北排开.若车场内已停 ...
- 第五周实践项目6 数制转换(栈)
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目6-把十进制的整数转换为任一进制数输出.提示:要转换为r进制,则 ...
最新文章
- java遍历数据库的东西_java遍历读取整个redis数据库实例
- 再造一个「谷歌大脑」?Samy Bengio加入苹果:将领导全新AI研究部门
- Mac 上 iterm2 和 VSCode 终端中的字体设置建议
- 51nod 1105:第K大的数
- Angular学习个人遇见的问题分享
- 【Kafka】Kafka为什么要加入分区的概念
- retain copy(浅复制) mutablecopy (深复制)
- Linux配置apache虚拟主机:静态文件
- OpenSSH 命令注入漏洞通告(CVE-2020-15778,Openssh <=8.3p1)
- 【第6章 循环】while语句
- python函数做n_【python】定义函数、参数、递归(n!)
- [测试技术分享]easyFuzzer使用案例分享
- 学习 python ORM 类库 SQLAlchemy 使用
- 【练习8.7】cvGoodFeaturesToTrack确定图像强角点、cvFindCornerSubPix亚像素级角点检测...
- ElasticSearch5.0——IK词库加载
- java 在圆圈里添加字母,在圆圈内写入数字或字母的方法
- 集成海康威视Sadp SDK实现设备激活
- 货币单位PHP,PHP实现货币换算的方法_PHP
- 与阿里合伙人合影,两年净赚一百万,这个草根姑娘有什么魔力?
- C# Activator和new的区别