删除线性表中为x的元素的三种简单算法。

 1 //删除线性表中不为x的元素。
 2 void delete_list(Sqlist &L,int x){
 3     int k = 0;
 4     for(int i=0;i < L.length;i++){
 5         if(L.data[i] != x){
 6             L.data[k] = L.data[i];
 7             k++;
 8         }
 9     }
10     L.length = k;
11 }
12
13 //先统计不为x的个数,然后将线性表中不为x的数据向前移动K个。
14 void delete_list(Sqlist &L,int x){
15     int k = 0,i=0;
16     while(i < L.length){
17         if(L.data[i] == x){
18             k++;
19         }
20         else{
21             L.data[i-k] = L.data[i];
22         }
23         i++;
24     }
25     L.length = L.length - k;
26 }
27
28 //用头指针和尾指针同时向中间靠拢来实现。
29 void delete_list(Sqlist &L,int x){
30     int k = 0,temp =0;int *head = L.data[0],*nail = L.data[L.length-1];
31     while(head != nail){
32         if(*head == x){
33             while(*nail == x){
34                 nail--;
35             }
36             temp = *head;
37             *head = *nail;
38             *nail = temp;
39         }
40         else{
41             head++;
42         }
43
44     }
45 }
时间: 2024-11-10 13:15:30

删除线性表中为x的元素的三种简单算法。的相关文章

王道数据结构——线性表中顺序表的一些综合应用题

1.长度为n的顺序表中,编写一个时间复杂度为O(n),空间复杂度为O(1)的算法,用于删除线性表中所有值为x的数据元素.(满足要求的数放在第k位上) 1 #include <cstdio> 2 3 /*输出数组名为a.长度为n的数组*/ 4 void print(int *a, int n){ 5 for(int i = 0;i < n; i++){ 6 printf("%d ", a[i]); 7 } 8 puts(""); 9 } 10 11

小猪的数据结构辅助教程——2.7 线性表中的双向循环链表

小猪的数据结构辅助教程--2.7 线性表中的双向循环链表 标签(空格分隔): 数据结构 本节学习路线图与学习要点 学习要点: 1.了解引入双向循环链表的原因 2.熟悉双向循环链表的特点以及存储结构 3.掌握双向循环链表的一些基本操作的实现逻辑 4.掌握逆序输出双向循环链表元素逻辑 1.双向循环链表的引入 2.双向循环链表的存储结构 双向循环链表的特点: 上面也说了,空间换时间,比起循环链表只是多了一个指向前驱的指针 特点的话: 判断空表:L ->next = L -> prior = L; 存

小猪的数据结构辅助教程——2.4 线性表中的循环链表

小猪的数据结构辅助教程--2.4 线性表中的循环链表 标签(空格分隔): 数据结构 本节学习路线图与学习要点 学习要点: 1.了解单链表存在怎样的缺点,暴露出来的问题 2.知道什么是循环单链表,掌握单链表的特点以及存储结构 3.掌握循环链表的一些基本操作的实现逻辑,最好能手撕代码 1.循环单链表的引入 2.循环链表的特点以及存储结构 循环链表的特点: 上面也说了,比单链表稍微高比格一点的地方就是: 链表最后一个结点的指针域指向了头结点而已,这样形成所谓的环,就是循环单链表了,呵呵! 特点的话有:

小猪的数据结构辅助教程——2.1 线性表中的顺序表

小猪的数据结构辅助教程--2.1 线性表中的顺序表 标签(空格分隔): 数据结构 本节学习路线图与学习要点 学习要点: 1.抽象数据类型(ADT)的概念,三要素:数据,数据元素间的关系和数据的操作 2.线性表的特点:按照一条线排列的数据集合,1对1,除了首元和尾元,其他元素都有直接前驱和直接后继 3.牢记线性表的存储结构,要理解并熟悉12个基本操作的逻辑,最好能徒手撕出代码 4.求并集,顺序表的经典例子,必须掌握! 1.抽象的数据类型 简单点说: 抽象:有点像我们面向对象语言中的类的思想,将事物

小猪的数据结构辅助教程——2.2 线性表中的单链表

小猪的数据结构辅助教程--2.2 线性表中的单链表 标签(空格分隔): 数据结构 本节学习路线图与学习要点 学习要点: 1.理解顺序表以及单链表各自的有点以及缺点! 2.熟悉单链表的形式,对于头指针,头结点,尾结点,数据域和指针域这些名词要知道是什么! 3.熟悉单链表的结点结构 4.区分头指针与头结点! 5.熟悉创建单链表的两种方式:头插法和尾插法 6.了解单链表12个基本操作的逻辑 7.有趣的算法题:查找单链表的中间结点~ 1.单链表的引入(顺序表与单链表的PK) 2.单链表的结构图以及一些名

删除数据表中除id外其他字段相同的冗余信息

删除一个信息表中除id外其他字段都相同的冗余信息,如下 id name addr 1 a b 2 a b 3 b c 删除这个表中的冗余信息 即应该是 id name addr 1 a b 3 b c 设table为t Sql:delete from tableName where id not in (select min(id) from tableName group by name, addr…)

如何删除工作表中的网格线(gridlines)

删除工作表中的网格其实很简单,首先选中要删除网格线的工作表:如图1 图1 然后单击"视图(VIEW)"菜单,在"视图(VIEW)"菜单中,有个叫"网格线(GridLines)"的复选框:如图2: 图2 将对勾去掉即可:如图3

逆向删除属性表中的字段

删除属性表中的字段一定要注意循环的方式.如果是for循环,i< FeatureClass.Fields.FieldCount话,每删除一个字段FieldCount属性返回的字段数量将减少一个,也就是你根本不能完全删除想要删除的字段:如果你先把FeatureClass.Fields.FieldCount赋给一个变量count,for循环中使用i<count,最后导致索引越界:所以,建议使用逆向的方法删除字段. IFeatureClass pointFS = GPClass.gpUtilities

Mysql 如何删除数据表中的重复数据!

1.使用distinct查询所有不重复的记录 2.创建数据表相同结构的临时表,将第一步的数据复制进去 create temporary table if not exists student_temp as (select distinct(name), sex from student); 3.truncate table student; 4.insert into student(id,name,sex) select null,name,sex from student_temp; My