首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

笔考题:顺序表元素删除

2012-08-21 
笔试题:顺序表元素删除笔试题:长度为n的线性表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法

笔试题:顺序表元素删除

笔试题:

长度为n的线性表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的数据元素.

解决方法:

用K记录顺序表中不等于x的元素个数(即需要保存的元素个数),边扫描L边统计k,并将不等于x的元素像前放置K个位置,最后修改L的长度.

#include <stdio.h>#include <stdlib.h>#define MaxSize 50typedef struct{        int data[MaxSize];        int length;}SqList; void del_x(SqList &L,int x) {  int k=0; for(int i=0;i<L.length;i++) if(L.data[i]!=x) { L.data[k]=L.data[i]; k++;   //不等于x的元素个数加1 } L.length=k; //顺序表L的长度等于K }int main(){ SqList Data; Data.length=10; for(int i=1;i<Data.length;i=i+2) Data.data[i]=i; for(int i=0;i<Data.length;i=i+2) Data.data[i]=0;//调用函数前Data.data[10]={0,1,0,3,0,5,0,7,0,9}//调用函数删除元素0,并修改Length的长度. del_x(Data,0);//显示删除完成后的顺序表.  for(int i=0;i<Data.length;i++)  printf("%d",Data.data[i]);  system("pause"); }

文章出自:我爱程序员http://www.52coder.net/archives/1204.html版权所有.本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源.


热点排行