首页 > 编程知识 正文

顺序表基本操作C 实现,顺序表的基本操作代码

时间:2023-05-05 19:38:21 阅读:190387 作者:1401

33558 www.Sina.com/# includeiostreamusingnamespacestd; const int MAXSIZE=20; class sqlist { private : int * data; int length; 公共: sqlist (; //构造函数~SqList (; //析构函数voidcreatlist(inta[],int n ); //创建顺序表void Display (; //输出顺序表中的所有元素int GetLength (; //获取顺序表的长度boolgetelem(int,int elem ); //获取顺序表元素boollistinsert(intI,int elem )//插入元素boollistdelete(intI,int elem ); //删除元素}; sqlist :3360 sqlist ((cout ' constr actok ' endl ); data=new int[MAXSIZE]; 长度=0; } sqlist :至sqlist () { cout'No'endl; delete [ ]数据; } void sqlist :3360 creat list (inta [ ],int n ) ) for ) intI=0; i n; I ) { data[i]=a[i]; (} length=n; cout'create SqList success!' endl; //获取顺序表的长度int SqList:GetLength () { return length; //指定的元素boolSQLIST33603360getelem(intI,int e ) if ) length==0||| i1|| ilength { return false; } e=data[i-1]; 返回真; //插入要素bool sqlist :3360 list insert (inti,int e ) if(length==Maxsize ) /保证插入位置正确的返回假; if(I1||Ilength1)返回假; if(Ilength ) for ) intk=length-1; k=i-1; k----//将插入位置之后的所有元素向后移动一个data[k 1]=data[k]; } data[i-1]=e; //将要插入的元素分配给插入位置length; //将顺序表的长度增加return true; //要素bool sqlist :3360 list delete (inti,int e ) if ) length==0)//保证删除位置正确的返回假; if(I1||Ilength )返回假; e=data[i-1]; //要删除的元素必须是eif(Ilength ) for ) intk=I; k length; k ) (/删除位置后面的元素都是前一个位置data[k-1]=data[k]; }Length----; //删除一个排序表长度return true; }void SqList:Display () { cout'display SqList: ); for(intI=0; i length; I ) coutdata[I](t ); } coutendl; }int main () { SqList *sqlist=new SqList ); intarr [5]={ 3,4,5,6,7 }; sqlist-creatlist(ARR,5 ); sqlist-Display (; 计数获取长度: ' sqlist-getlength () endl; int a; sqlist-getelem(2,a ); cout'get element is : 'aendl; sqlist-list insert (2,100; sqlist-Display (; int b; sqlist-listdelete(2,b ); cout ' deleteelementis : ' bendl; sqlist-Display (; 删除sqlist; 返回0; 创建//类的第二种方法int main01 () { SqList sqlist; intarr [5]={ 3,4,5,6,7 }; sqlist.creatlist(ARR,5 ); sqlist.Display (; cout ' getelementlengthis : ' sqlist.getlength () endl; int a; sqlist.getelem(2,a ); cout'get element is : 'aendl; sqlist.list insert (2,100; sqlist.Display (; int b; sqlist.listdelete(2,b ); cout ' deleteelementis : ' bendl; sqlist.Display (; //delete sqlist; 返回0; }

**

在ps: c上创建类的三种方法: **

# includeiostreamusingnamespacestd; class A { private: int n; 公共: a (intm ) :n(m ) m ) }~a ) ); int main () (aa ) ); //向堆栈分配AB=A(1; //在堆栈中分配A* c=new A(1); //为堆分配delete c的return 0; }注意事项:

1、制作new类对象需要接收指针,在一个地方初始化,在多个地方使用

2、new创建类对象使用完后需要删除

3、new制作对象直接使用堆空间,但在不局部使用new定义类对象的情况下使用堆栈空间

4、作为函数返回值、函数参数等,new对象指针的用途很广

5、频繁调用时,不适合new,就像new申请并释放内存一样

6、堆栈的大小远远小于堆栈的大小

7、栈是机器系统提供的数据结构,计算机在底层支持栈。 分配专用的寄存器,存储堆栈的地址,对堆栈堆栈执行专用的指令,决定堆栈的效率高。 堆是由C/C函数库提供的,其机制很复杂。 例如,为了分配内存,库函数根据一定的算法(具体算法可以参照数据结构/操作系统),在堆存储器中搜索足够大的可用空间(如果没有足够大的空间),在存储器中可以调用系统功能来增加程序数据段的内存空间,这样就有机会分成足够大的内存来执行,显然堆栈的效率比堆栈低得多

关于三种对象创建方法文章的链接地址

3359 www.cn blogs.com/lizer Lin/p/6813455.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。