顺序表

#include<cstdlib>
#include<iostream>
#include<malloc.h>
#include<conio.h>
#define LIST_INT_SIZE 100
#define LISTINCREMENT  10
using 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;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值