线性表的应用1(顺序表的遍历和查找)
来源:互联网 发布:破解 经淘宝排查认定 编辑:程序博客网 时间:2024/05/07 13:34
已知顺序表L中的数据类型为整型。设计算法将其调整为左右两部分,左边的元素(即排在前面的)均为奇数,右边所有元素(即排在后面的)均为偶数,并要求算法的时间复杂度为O(n),空间复杂度为O(1)。
由于顺序表的空间已经确定,所以可以遍历查找每个元素,判断其是否为奇数,并将其放入表的头部或者尾部
代码实现:
#include <iostream>#include <cstdio>#include <cstdlib>#define OVERFLOW -2#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量#define LISTINCREMENT 10 //线性表存储空间的分配增量using namespace std;typedef int ElemType;typedef struct{ ElemType *elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量(以sizeof(ElemType)为单位)} SeqList;int InitList(SeqList &L){ L.elem=(ElemType *)calloc(LIST_INIT_SIZE,sizeof(ElemType)); if(!L.elem) exit(OVERFLOW); L.length=0; L.listsize=LIST_INIT_SIZE; return 1;}int ListInsert(SeqList &L, int i,ElemType e){ ElemType *newbase,*p,*q; if(i<1||i>L.length+1) return 0; if(L.length>=L.listsize) { newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType)); if(!newbase) exit(OVERFLOW); L.elem=newbase; L.listsize+=LISTINCREMENT; } q=&(L.elem[i-1]); for(p=&(L.elem[L.length-1]); p>=q; --q) { *(p+1)=*p; } *q=e; ++L.length; return 1;}int ListDelet(SeqList &L,int i,ElemType &e){ ElemType *p,*q; if((i<1)||(i>L.length)) return 0; p=&(L.elem[i-1]); e=*p; q=L.elem+L.length-1; for(++p; p<=q; ++p) *(p-1)=*p; --L.length; return 1;}void Output(SeqList &L){ for(int i=0; i<L.length; i++) { printf("%d ",L.elem[i]); } printf("\n");}void Output1(SeqList &L){ for(int i=0; i<L.listsize; i++) { printf("%d ",L.elem[i]); } printf("\n");}int main(){ SeqList L; int flag,e,n; flag=InitList(L); if(flag==1) { scanf("%d",&n); for(int i=1; i<=n; i++) { scanf("%d",&e); flag=ListInsert(L,i,e); if(flag==0) { cout<<"Insert Fail1"<<endl; break; } } Output(L); //cout<<L.length<<endl; int k1=0; int k2=LIST_INIT_SIZE-1; for(int i=0; i<L.length; i++) { int ee=L.elem[i]; L.elem[i]=0; if(ee%2!=0) { L.elem[k1++]=ee; continue; } else { L.elem[k2--]=ee; continue; } } Output1(L); } else { cout<<"Can not do it!"<<endl; } return 0;}
0 0
- 线性表的应用1(顺序表的遍历和查找)
- 线性表的顺序查找
- 线性表的顺序查找
- 线性表的查找-顺序查找
- 线性表的查找操作(线性表的顺序查找、二分查找、分块查找)
- 算法-查找-线性表的查找(顺序查找,二分查找,分块查找)
- 查找技术---线性表查找技术的顺序表查找
- (1)顺序表的操作 ① 输入一组整型元素序列,建立线性表的顺序存储结构。 ② 实现该线性表的遍历。 ③ 在该顺序表中查找某一元素,查找成功显示查找元素,否则显示查找失败。 ④ 在该顺序表中删除或插入指
- 线性表的查找(顺序查找,二分查找,分块查找)
- 第十四周 项目1 线性表的顺序查找
- 第十三周项目1--线性表的顺序查找
- 线性表的输入输出插入删除查找(顺序表示)
- 顺序存储操作的实现和线性表及其应用
- [SDUT](1130)数据结构上机测试1:顺序表的应用 ---顺序存储(线性表)
- 2.2线性表的顺序表示和实现(1)
- 数据结构例程——线性表的顺序查找
- 线性表的顺序储存结构 初始化、查找、删除、插入
- 查找----线性表的查找
- Codeforces--616A--Comparing Two Long Integers(模拟水题)
- Content-Type:application/x-www-form-urlencoded 和 Content-Type:multipart/rel
- 【BZOJ1143】[CTSC2008]祭祀river【最长反链】【传递闭包】
- Android BitmapShader 实战 实现圆形、圆角图片
- Maven的安装和配置——在Windows上安装Maven
- 线性表的应用1(顺序表的遍历和查找)
- SharePoint\O365 "See also"功能 and site feature 激活\禁用小节
- Messenger/Handler and Binder
- JQueryEasyUi学习笔记
- Cordova android框架详解
- Oracle 实例内存结构
- LeetCode 258 -Add Digits ( JAVA )
- python小技巧
- Android进阶——属性动画Property Animation详解(一)