/*
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的值相关推荐

  1. 第7周实践项目1.1 环形队列中用队尾和队的元素个数来实现队列的算法库

    typedef struct {Elemtype date[maxsize];int front;int count; }sqqueue; void initqueue (sqqueue *& ...

  2. oracle删除库里的所有表,清空mysql指定库里全部表数据-自动删除所有表,有外键约束的表优先删除...

    清空mysql指定库里所有表数据-自动删除所有表,有外键约束的表优先删除 由于要清空数据库数据 ,手动非常麻烦.网上找了一下,有一个Oracle的,参照它,在其上修改一下用于Mysql,把代码奉献如下 ...

  3. 【python之操作注册表】Python删除注册表节点下的值

    [python操作注册表]Python删除注册表节点下的值 背景 本来是别的平台的一个bug,以为自己去沟通然后让他们修就好了,结果又是这样别人的坑自己来填.主要是在卸载的时候要删除注册表下的所有节点 ...

  4. 第3周实践项目1 顺序表的基本运算

    /*copyright (t) 2017,烟台大学计算机学院 *All rights reserved. *文件名称:1.cpp *作者:邵雪源 *完成日期:2017年9月19日 *版本号:v1.0 ...

  5. 第八周实践项目9 算法库——广义表

    /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目9- *作 者:邵雪源 *完成日期:2017年12月14日 *版 ...

  6. 第七周实践项目2.3 顺序环形队列

    下图是数据存储结构设计及各种操作实现的要点: /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目2.3- *作 者 ...

  7. 第八周实践项目6 猴子选大王(数组版)

    /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目6-一群猴子,编号是1,2,3 -m,这群猴子(m个)按照1-m ...

  8. 第五周实践项目7 后缀表达式

    基于栈结构,将中缀表达式转换为后缀表达式的算法步骤是: 初始化运算符栈op; 将'='进栈; 从exp读取字符ch; while (ch!='\0') {     if (ch不为运算符)  将后续的 ...

  9. 第七周实践项目6 停车场模拟(栈和队列综合)

    设停车场是一个可停放n辆汽车的狭长死胡同,南边封口,汽车只能从北边进出(这样的停车场世间少有).汽车在停车场内按车辆到达时间的先后顺序,最先到达的第一辆车停放在车场的最南端,依次向北排开.若车场内已停 ...

  10. 第五周实践项目6 数制转换(栈)

    /* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目6-把十进制的整数转换为任一进制数输出.提示:要转换为r进制,则 ...

最新文章

  1. java遍历数据库的东西_java遍历读取整个redis数据库实例
  2. 再造一个「谷歌大脑」?Samy Bengio加入苹果:将领导全新AI研究部门
  3. Mac 上 iterm2 和 VSCode 终端中的字体设置建议
  4. 51nod 1105:第K大的数
  5. Angular学习个人遇见的问题分享
  6. 【Kafka】Kafka为什么要加入分区的概念
  7. retain copy(浅复制) mutablecopy (深复制)
  8. Linux配置apache虚拟主机:静态文件
  9. OpenSSH 命令注入漏洞通告(CVE-2020-15778,Openssh <=8.3p1)
  10. 【第6章 循环】while语句
  11. python函数做n_【python】定义函数、参数、递归(n!)
  12. [测试技术分享]easyFuzzer使用案例分享
  13. 学习 python ORM 类库 SQLAlchemy 使用
  14. 【练习8.7】cvGoodFeaturesToTrack确定图像强角点、cvFindCornerSubPix亚像素级角点检测...
  15. ElasticSearch5.0——IK词库加载
  16. java 在圆圈里添加字母,在圆圈内写入数字或字母的方法
  17. 集成海康威视Sadp SDK实现设备激活
  18. 货币单位PHP,PHP实现货币换算的方法_PHP
  19. 与阿里合伙人合影,两年净赚一百万,这个草根姑娘有什么魔力?
  20. C# Activator和new的区别

热门文章

  1. Mysql Replication 机制
  2. 信息编码:位操作布尔值编码
  3. DS, DB, WEB模块的安装(环境搭建) 学习日志 2012年7月10日
  4. 递归三:变态蛙跳台阶
  5. March 2007 CTP Linq 的一些改变
  6. (回文串)Manacher算法
  7. 膝盖中了一箭之康复篇-第五个月
  8. 关于ListView顶部和底部滚(拖)动出现阴影解决方案
  9. 摘要:ASP.NET的路由
  10. RHEL 6 关闭ThinkPad 触摸板