顺序表删除

原创 2018年04月16日 22:58:01

前面我们学会了,顺序表的移动问题。

        删除无非就是找到这个元素把他后面的移动到前面来,然后再个数减一就完成了。    

        所以呢,分三步.

1:找到元素​

        架设一个循环跑呗.设要删除的元素为key,顺序表长度为n。

        for(i=0;i<n&&a[i]-key;i++);

        出了这个空循环,就有两种可能,找到了和没找到。(没找到直接输出没找到就是了),

假设找到了.

2:移动后面的

    for(j=i;j<n;j++)

    a[j]=a[j+1];

3:顺序表个数减一​

    n--;​

把上面的各个小部分综合一下;具体代码如下;

​/*设有数据集合data={3,2,5,8,4,7,6,9,},无序且无重复值,

目标:给定一个关键字key,在data中删除key*/

#include<stdio.h>

int  Delkey(int a[],int n,int key)

{

int i,j;

for(i=0;i<n&&a[i]-key;i++);//查找 

if(i==n)//没找到 

printf("Not Found!\n");

else//找到了 

{for(j=i;j<n-1;a[j]=a[j+1],j++);//key后面的元素前移 

n--;//删掉一个元素,顺序表长度减一。 

}

return n;

}

int main(void)

{

int i,n=8,key;

int a[8]={3,2,5,8,4,7,6,9};

scanf("%d",&key);

n=Delkey(a,n,key);

for(i=0;i<n;i++)

printf("%5d",a[i]);

return 0;

上面那个比较简单,下面来一个稍微的,

​/*设数据集合a={3,3,2,5,7,3,3,3,9,8,3,8,6,3,3,}

数据元素含有重复值,要求删掉3*/

#include<stdio.h>

int  Delkey(int a[],int n,int key)

{

int i=0,j;

while(i<n)

{

if(a[i]-key)

i++;

else

{

for(j=i;j<n-1;j++)

a[j]=a[j+1];//前移 

n--;//元素删一个,顺序表短一截 

}

}

return n;

}

int main(void)

{

int i,n=15,key;

int a[15]={3,3,2,5,7,3,3,3,9,8,3,8,6,3,3,};

scanf("%d",&key);

n=Delkey(a,n,key);//普通删除算法 

for(i=0;i<n;i++)

printf("%5d",a[i]);

return 0;

还有另外一种做法,和想法​

​//删除要删除的,就是留下要留下的. 

//删除要删除的,就是留下要留下的. 

//删除要删除的,就是留下要留下的. 

#include<stdio.h>

int  Delkey(int a[],int n,int key)

{

int i=0,j;

for(i=j=0;i<n;i++)

{

if(a[i]-key)

a[j++]=a[i];//把a[i]存起来,之后a[j]++; 

return j;//最后顺序表长度就是j。 

}

int main(void)

{

int i,n=15,key;

int a[15]={3,3,2,5,7,3,3,3,9,8,3,8,6,3,3,};

scanf("%d",&key);

n=Delkey(a,n,key);//留下 

for(i=0;i<n;i++)

printf("%5d",a[i]);

return 0;

今天的代码就分享到这里,谢谢大家,我是小纸人。

顺序表中的删除和插入

顺序表中的运算无非四种,增删改查: 增:即向顺序表中插入数据,大部分情况下都是向一个有序表中插入,要是无序的话就先排序。 删:删除顺序表中的一个或多个元素,通过数据覆盖来消除原来数据。 改:找到数据,...
  • castle_kao
  • castle_kao
  • 2016-12-06 15:34:38
  • 1400

顺序表删除相同的元素

/*顺序表删除相同的元素 算法一:拿一个元素,依次与余下的元素进行比较,相同移动元素删除,缺点要进行大量的元素移动 算法二:一个元素与前j个不相同的元素进行比较,不相同则元素加入不同元素的区间,相...
  • u014558484
  • u014558484
  • 2016-07-22 10:43:09
  • 2007

顺序表的创建插入与删除

顺序表的创建插入与删除 坑爹的数据结构课,在加上坑爹的数据结构老师,将来的数据结构之路想必不会顺畅吧 。 好吧,闲话不多说。这该死的数据结构课上都没怎么听,哎我以为我“苦学”一寒假的链表,最开...
  • qq_32681843
  • qq_32681843
  • 2016-03-10 15:46:31
  • 4289

顺序表的初始化、插入、删除

顺序表的初始化、插入、删除
  • xiakejiang
  • xiakejiang
  • 2016-06-04 11:21:10
  • 1101

利用顺序表删除重复元素

刷题时经常遇到要删除一段给定的数据中重复的数,可以利用线性表来完成这样的程序,这里我介绍顺序表删除重复元素。#include using namespace std; typedef int Ele...
  • qq1169091731
  • qq1169091731
  • 2016-03-19 19:43:52
  • 1927

c++ 实现顺序表类(初始化、输入、插入与删除)<<计算机软件技术基础 徐士良>>

/* c++ 实现顺序表类(初始化、输入、插入与删除)> */ #include using namespace std; template class sq_LList { private: ...
  • taotaoah
  • taotaoah
  • 2016-04-20 11:38:50
  • 1072

数据结构之顺序表,插入,删除等

大三上半年把较多的精力放在了专业课上,一直也没分配多少时间自己去再关注其他感兴趣的,当你主动去学知识时,它就变的似乎更有趣了,进入正题,这几天开始又学习了数据结构,主要如下: 一数据结构重点研究...
  • Li__YingYing
  • Li__YingYing
  • 2013-03-17 19:02:16
  • 1965

c语言:顺序表的实现(一) 创建,插入,删除,查找,输出等基本操作实现

#include #include #define LIST_INIT_SIZE 100 #define LIST_INCREMENT 10 using namespace std; struct S...
  • qq_28598203
  • qq_28598203
  • 2016-03-22 00:00:49
  • 1119

顺序表的定义、初始化、及插入、删除、查询操作,将算法转化成具体的代码

#include using namespace std; #define LIST_INIT_SIZE  100 #define LISTINCREMENT   10 int OK=1; ...
  • hackerain
  • hackerain
  • 2010-10-01 17:38:00
  • 9978

简单顺序表的插入,删除,指定位置,指定元素的插入删除操作

简单顺序表的首部和尾部的插入删除,查找指定元素,删除指定元素,删除指定位置的元素,删除指定元素。...
  • o_bvious
  • o_bvious
  • 2016-05-09 22:48:37
  • 1973
收藏助手
不良信息举报
您举报文章:顺序表删除
举报原因:
原因补充:

(最多只允许输入30个字)