1. 程式人生 > >資料結構二——線性表

資料結構二——線性表

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 ;

 

 

    }

}