数据结构二——线性表

2.1 线性表的含义

    ● 线性表(linear list)数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列,而且是有顺序的。

● 数学定义

2.2 线性表的抽象数据类型

2.3 顺序存储结构

● 线性表的顺序存储结构

#define LISTSIZE 100

typedef int DataType

typedef struct SeqList

{

    DataType data[LISTSIZE];

    int nLength;

}SeqList;

顺序表代码操作:(含初始化、判断是否为空、删除、获取长度、查找指定元素、插入、倒置)

#define LISTSIZE 100

typedef int DataType

typedef struct Seqlist{

    DataType data[LISTSIZE];#最大长度

    int nLength;#这是有效长度

}SeqList;

##初始化

void initList(SeqList *list)

{

    list->nLength=0;

}

##判空

void ListEmpty(SeqList *list)

{

    return list->nLength==0;

}

##删除所有元素

void clearList(SeqList *list)

{

     list->nLength=0;

}

## 获取线性表中元素个数

void ListEmpty(SeqList *list)

{

     return list->nLength;

}

## 获取下标为i的元素

DataType* getNode(SeqList *list,int i)

{

    if(i<0||i>list->nLength-1)

         return NULL;

    return &list->data[i];

}

##查指定元素

int locateNode(SeqList *list,DataType x)

{

    for (int i =0;i<list->nLength;i++)

        if (list->data==x)

            return i;

     return -1;

}

### 插入

bool insert (SeqList *list,int i ,DataType x)

{

   if(list->nLength==LISTSIZE)

       return false;

   int position=i;

    if (i<0)

        position=0;

    if (i>list->nLenth-1)

        position=list->nLength;

    for (int j=list->nLength-1;j>=position;j--)

        list->data[j+1]=list->data[j];

     {

    list->data[position]=x;

    list->nLength++;

    return True;

}

## 两个线性表联合

void union(SeqList *a,SeqList *b)

{

    if (a->nLength+b->nLength>LISTSIZE)

         return ;

    for (i=0;i<b->nLength;i++){

         DataType e=b->data[i];

         if(locateNode(a,e)==-1)

      {insert(a,a->nLength,e);}

   }

}

## 倒置

void reserve(SeqList *list)

{

    for (int i=0;i<list->nLength/2;i++){

           DataType t =list->data[i];

           list->data[i]=list->data[list->nLength-1-i];

           list->data[list->nLength-1-i]= t ;

    }

}

猜你喜欢

转载自blog.csdn.net/qq_36447181/article/details/84194884