顺序表
来源:互联网 发布:软件杯比什么 编辑:程序博客网 时间:2024/04/30 15:17
#include<cstdlib>#include<iostream>#include<malloc.h>#include<conio.h>#define LIST_INT_SIZE 100#define LISTINCREMENT 10using namespace std;class SqList{ private: int *elem; int length; int listsize;public:SqList() { elem=(int*)malloc(LIST_INT_SIZE*sizeof(int)); if(elem) cout<<"InitList_Sq.cpp Succss"<<endl; else exit(0); length=0; listsize=LIST_INT_SIZE; }int ListInsert_Sq(int i,int e);void ListDlete_Sq(int i);int LocateElem_Sq(int e);void ListModify_Sq(int i,int e);void ListSort_Sq();void output();void input();~SqList(){ int *q=&elem[length-1]; for(int *p=elem;p<=q;++p) free(p);}};int SqList::ListInsert_Sq(int i,int e){ if(i<1||i>length+1) { cout<<" insert unsucess"<<endl; return 0; }if(length>=listsize){ int *newbase=(int *)realloc(elem,(LISTINCREMENT+listsize)*sizeof(int)); if(!newbase) return 0; elem=newbase; listsize+=LISTINCREMENT;}int *p=NULL,*q=NULL;q=&elem[i-1];for(p=&elem[length-1];p>=q;--p)*(p+1)=*p; *q=e; ++length;}void SqList::ListDlete_Sq(int i){ if(i<1||i>length) { cout<<"The element don't empty"<<endl; exit(0); }int *p=&elem[i-1];cout<<"dlete elememt:"; cout<<*p<<endl;int *q=&elem[length-1];for(p++;p<=q;++p)*(p-1)=*p;--length;}int SqList::LocateElem_Sq(int e){ int i=1;while(i<=length&&elem[i-1]!=e)i++;if(i>length) return 0;else i;}void SqList::ListModify_Sq(int i,int e){ if(i<1||i>length) { cout<<"The element don't empty"<<endl; exit(0); }elem[i-1]=e;getchar();}void SqList::ListSort_Sq(){ for(int i=1;i<length;++i) { int key=elem[i]; int j=i-1; while(j>=0&&elem[j]>key) { elem[j+1]=elem[j]; j--; } elem[j+1]=key; }}void SqList::output(){ int *q=elem+length-1; for(int *p=elem;p<=q;++p) cout<<*p<<" "; cout<<endl;}void SqList::input(){ int n; cout<<"p;ease input the initlist length:"; cin>>n; length=n; cout<<"please input date:"; for(int i=0;i<length;++i)cin>>elem[i];}int main(){ SqList L; L.input(); L.output(); L.ListSort_Sq(); L.output(); int i,e; cout<<"please input insert position and date: "; cin>>i>>e; L.ListInsert_Sq(i,e); L.ListSort_Sq(); L.output(); cout<<"please input the position of the delete element: "; cin>>i; L.ListDlete_Sq(i); L.ListSort_Sq(); L.output(); cout<<"please input modify position and date: "; cin>>i>>e; L.ListModify_Sq(i,e); L.ListSort_Sq(); L.output(); return 0;}