基础顺序表

 
 
#include<iostream>
#include<malloc.h>
using namespace std;
#define MaxSize 100
typedef int ElemType;
typedef struct{
	int length;
	ElemType data[MaxSize];
}SqList;
void CreateList(SqList *&L,ElemType a[],int n)
{
	L=(SqList *)malloc(sizeof(SqList));
	int i=0;
	int k=0;
	while(i<n)
	{
		L->data[i]=a[i];
		i++;
		k++;
	}
	L->length=k;
 } //½¨Ë³Ðò±í
 void InitList(SqList *&L)
 {
 	L=(SqList *)malloc(sizeof(SqList));
 L->length=0;
 }
 void DeleteList(SqList *&L)
 {
 	free(L);
 }
 bool ListEmpty(SqList *L)
 {
 	return L->length==0;
 }
 int ListLength(SqList *L)
 {
 	return L->length;
 }
 void DispList(SqList *L)
 {
 	int i;
 	for(i=0;i<L->length;i++)
 	cout<<L->data[i];
 	cout<<"\n"<<endl;
 }
 bool GetElem(SqList *&L,int i,ElemType &e)
 {
 	if(i<1||i>L->length)
 	return false;
 	else
 	e=L->data[i-1];
 	return true;
 }
 int LocateElem(SqList *L,ElemType e)
 {
 	int i=0;
 	while(i<L->length&&L->data[i]!=e)
 	i++;
 	if(i>=L->length)
 	return 0;
 	else
 	return i+1;
}
bool ListInsert(SqList *&L,int i,ElemType e)
{
	if(i<1||i>L->length+1)
	return false;
	int j;
	i--;
	for(j=L->length;j>i;j--)
    L->data[j]=L->data[j-1];
    L->data[i]=e;
    L->length++;
    return true;
}
bool ListDelete(SqList *&L,int i,ElemType &e)
{
	if(i<1||i>L->length)
return false;
int j;
i--;
e=L->data[i];
for(j=i;j<L->length;j++)
L->data[j]=L->data[j+1];
L->length--;
return false;
}
int partition1(SqList *&L)
{
    int i=0,j=L->length-1;
    ElemType pivot=L->data[0];
    while(i<j)
    {
        while(i<j&&L->data[j]>pivot)
            j--;
        while(i<j&&L->data[i]<=pivot)
            i++;
        if(i<j)
            swap(L->data[i],L->data[j]);
    }
    swap(L->data[0],L->data[i]);


}
void partition2(SqList *&L)
{
    int i=0;int j=L->length-1;
    ElemType pivot=L->data[0];
    while(i<j)
        while(i<j&&L->data[j]>pivot)
        j--;
    L->data[i];
    while(i<j&&L->data[j]<=pivot)
        i++;
}
int main()
{
	SqList *L;
	ElemType a[10];
	int i;
	for(i=0;i<10;i++)
	cin>>a[i];
	InitList(L);
	CreateList(L,a,10);


	partition1(L);
	DispList(L);
	if(ListEmpty(L))
	cout<<"this list is empty!"<<endl;
	else
	cout<<"this list is not empty!"<<endl;
	cout<<"the length of list is "<<ListLength(L)<<endl;
	ElemType e;
	GetElem(L,3,e);
	cout<<"the third of the list is "<<e<<endl;
	cout<<"the location of '4' is "<<LocateElem(L,4)<<endl;
	DispList(L);
	e=3;
	ListInsert(L,3,e);
	DispList(L);
	ListDelete(L,2,e);
	DispList(L);
}



猜你喜欢

转载自blog.csdn.net/bokaicao/article/details/80784781