【數據結構】14_線性表的本質和操做

生活中的智慧

幼兒園老師總會讓小朋友以一樣的排隊秩序出行。
image.png編程

線性表(List)的表現形式

  • 零個或多個數據元素組成的集合
  • 數據元素在位置上是有序排列的
  • 數據元素的個數是有限的
  • 數據元素的類型必須相同

線性表(List)的抽象定義

  • 線性表是具體有相同類型的 n(>=0)個數據元素有限序列

(a0, a1, ..., an-1)學習

ai 是表項(數據元素),n 是表長度spa

線性表(List)的性質

  • a0 爲線性表的第一個元素,只有一個後繼
  • an-1 爲線性表的最後一個元素,只有一個前驅
  • 除 a0 和 an-1 外的其餘元素 ai 既有前驅,又有後繼
  • 直接支持逐項訪問和順序訪問

思考題:下面的關係能夠用線性表描述的是

班級中同窗的友誼關係 (不能夠,圖)
公司中的上下級關係 (不能夠,樹)
冬天圖書館用物品排隊佔座 (不能夠,類型不一樣)
花名冊上名字之間的關係 (視具體名字是否有序)code

討論

宮城:線性表能夠說是生活」隊列關係「的總結
木暮:對,咱們學習以後就能夠在程序中使用了
宮城:但是怎麼使用一個線性表呢?
木暮:確實!還有就是程序中怎麼生成一個線性表呢?blog

問題

線性表只是一個單純的概念嗎?
如何在程序中描述和使用一個線性表?隊列

線性表的一些經常使用操做

  • 將元素插入線性表
  • 將元素從線性表中刪除
  • 獲取目標位置處元素的值
  • 設置目標位置處元素的值
  • 獲取線性表的長度
  • 清空線性表

線性表在程序中表現爲一種特殊的數據類型rem

template<typename T>
class List : public Object
{
public:
    virtual bool insert(int i, const T &e) = 0;
    virtual bool remove(int i) = 0;
    virtual bool set(int i, const T &e) = 0;
    virtual bool get(int i, T &e) = 0;
    virtual int length() const = 0;
    virtual void clear() = 0;
};

編程實驗:線性表抽象類的建立

文件:List.hget

#ifndef LIST_H
#define LIST_H

#include "Object.h"

namespace DTLib
{

template<typename T>
class List : public Object
{
public:
    virtual bool insert(int i, const T &e) = 0;
    virtual bool remove(int i) = 0;
    virtual bool set(int i, const T &e) = 0;
    virtual bool get(int i, T &e) = 0;
    virtual int length() const = 0;
    virtual void clear() = 0;
};

}

#endif // LIST_H

小結

  • 線性表是數據元素的有限並有序的集合
  • 線性表中的數據元素必須是類型相同的
  • 線性表可用於描述隊列關係的問題
  • 線性表在程序中表現爲一種特殊的數據類型
  • 線性表在 C++ 中表現爲一個特殊的抽象類

以上內容整理於狄泰軟件學院系列課程,請你們保護原創!it

相關文章
相關標籤/搜索