#include <iostream>
using namespace std;
#define MaxSize 50
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int length;
}SqList;
/**创建顺序表**/
void CreateList(SqList* &L,ElemType a[],int n)
{
int i;
L = (SqList *)malloc(sizeof(SqList));
for(i=0;i<n;i++){
L->data[i]=a[i];
}
L->length=n;
}
/**初始化顺序表**/
void InitList(SqList* &L)
{
L=(SqList *)malloc(sizeof(SqList));
L->length=0;
}
/**销毁线性表**/
void DestroyList(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++){
printf("%d",L->data[i]);
}
printf("\n");
}
/**求线性表中的某个数据元素值**/
bool GetElem(SqList *L,int i,ElemType &e)
{
if(i<1||i>L->length)
return false;
e=L->data[i-1];
return true;
}
/**按元素查找**/
int LocateElem(SqList *L,ElemType e)
{
int i=0;
while(L->data[i]!=e&&i<L->length)
{
i++;
}
if(i>=L->length)
return 0;
else
return i+1;
}
/**插入元素数据**/
bool ListInsert(SqList* &L,int i,ElemType e)
{
int j;
if(i<1||i>L->length+1)
{
return false;
}
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)
{
int j;
if(i<1||i>L->length)
return false;
i--;
e=L->data[i];
for(j=i;j<L->length-1;j++)
L->data[j]=L->data[j+1];
L->length--;
return true;
}
/**删除表中的所有x**/
void DeleteX_1(SqList* &L,ElemType e){
int k=0,i=0;
for(i;i<L->length;i++)
{
if(L->data[i]!=e){
L->data[k]=L->data[i];
k++;
}
}
L->length=k;
}
void DeleteX_2(SqList* &L,ElemType e){
int k=0,i=0;
while(i<L->length){
if(L->data[i]==e){
k++;
}
else
L->data[i-k]=L->data[i];
}
L->length -=k;
}
/**以第一个元素为界把大于它的放到他后面小于它的放到他前面**/
void move_1(SqList* &L)
{
int i=0,j=L->length-1;
int tmp;
while(i<j)
{
while(i<j&&L->data[j]>L->data[0])
j--;
while(i<j&&L->data[i]<=L->data[0])
i++;
if(i<j)
{
tmp=L->data[i];
L->data[i]=L->data[j];
L->data[j]=tmp;
}
}
tmp=L->data[0];
L->data[0]=L->data[j];
L->data[j]=tmp;
}
void move_2(SqList* &L)
{
int i=0,j=L->length-1;
int pivot = L->data[0];
while(i<j)
{
while(i<j&&L->data[j]>pivot)
j--;
L->data[i]=L->data[j];
i++;
while(i<j&&L-data[i]>=pivot)
i++;
L-data[j]=L-data[i];
j--;
}
L-data[i]=pivot;
}
int main(){
return 0;
}
网友评论