顺序表

作者: 我想做个程序员 | 来源:发表于2017-11-04 14:21 被阅读8次
#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;
}

相关文章

  • 数据结构与算法(二,线性表的顺序存储结构,穷举法(冒泡和选择排序

    线性表 顺序表 顺序表的特性 顺序表的元素有前驱和后继 顺序表有size 顺序表的增删改查 顺序表的优缺点优点:尾...

  • 顺序表-动态顺序表

    顺序表是逻辑上相邻的元素物理也相邻的。 静态内存是指在程序开始运行时由编译器分配的内存,它的分配是在程序开始编译时...

  • 顺序表-静态顺序表

    线性表,全名为线性存储结构。将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构(...

  • 线性表之顺序存储-顺序表

    顺序表的操作 [x] 向有序顺序表插入一个元素 [x] 顺序表的冒泡排序 [x] 顺序表的删除操作 [x] 顺序表...

  • 数据结构之线性表

    1、线性表-顺序表线性表-顺序表

  • 线性表-顺序表与单链表

    顺序表 线性表的顺序存储,是逻辑相邻,物理存储地址也相邻。 结构定义 顺序表的初始化 顺序表的插入 顺序表的取值 ...

  • 顺序表和链表的区别

    参考:线性表和链表的区别 注:参考文中的‘线性表’准确的说应该是’顺序表‘,链表与顺序表都是线性表。 顺序表:顺序...

  • 快速理解数据结构中链表

    组织数据作用的线性表分为顺序表和链表 顺序表:平常所使用的各类数组均为顺序表,即存储逻辑顺序和物理顺序相同。较常见...

  • 顺序表

    在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传...

  • 顺序表

    https://blog.csdn.net/qq_41943578/article/details/82934644

网友评论

      本文标题:顺序表

      本文链接:https://www.haomeiwen.com/subject/rbifmxtx.html