顺序表表--该算法删除线性表中所有值为x的数据元素(时间复杂度为O(n)、空间复杂度为O(1))
发布日期:2021-11-02 05:00:16 浏览次数:3 分类:技术文章

本文共 1464 字,大约阅读时间需要 4 分钟。

线性表

/*	已知长度为n的线性表A采用顺序存储结构。	设计一个时间复杂度为O(n)、空间复杂度为O(1)的算法,	该算法删除线性表中所有值为x的数据元素。*//*	方法一:	找到第一个不相等的元素就放到链表第一个,第二个就放到第二个*/ #include
#include
typedef struct { int data[100]; int length;}SqList;void CreateList(SqList *&L,int a[],int n);void delect(SqList *&L,int x);int main(){ int i; SqList *L; int a[] = {1,2,1,2,3,2}; CreateList(L,a,6); delect(*&L,2); for( i = 0; i < L->length; i++) printf("%d\n",L->data[i]); return 0; }void CreateList(SqList *&L,int a[],int n) //顺序表指针L { int i; L = (SqList *)malloc(sizeof(SqList)); for( i=0; i
data[i]= a[i]; } L->length = n; }void delect(SqList *&L,int x){ int k = 0; int i = 0; for( i = 0; i < L->length; i++) { if(L->data[i] != x) { L->data[k] = L->data[i]; k++; } } L->length = k;}
/*	方法二:将不为x的元素前移k个位置,最后修改A的长度	*/#include
#include
typedef struct{ int data[6]; int length;}SqList;void CreateList(SqList *&L,int a[],int n);void delect(SqList *&L,int x);int main(){ int i; SqList *L; int a[] = {1,2,1,2,3,2}; CreateList(L,a,6); delect(L,2); for( i = 0; i < L->length; i++) printf("%d\n",L->data[i]); return 0;}void CreateList(SqList *&L,int a[],int n) //顺序表指针L { int i; L = (SqList *)malloc(sizeof(SqList)); for( i=0; i
data[i]= a[i]; } L->length = n; }void delect(SqList *&L,int x){ int k = 0; int i; for( i = 0; i < L->length; i++) { if( x == L->data[i]) { k++; } else { L->data[i-k] = L->data[i]; } } L->length = L->length - k;}

转载地址:https://blog.csdn.net/weixin_43486985/article/details/97531905 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:顺序表--以第一个元素为分界线(基准), 将所有小于等于它的元素移到该元素的前面,将所有大于它的元素移到该元素的后面
下一篇:线性表--大体知识点

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年03月31日 01时55分11秒