基於順序表實現線性表

2021-08-10 03:10:22 字數 1812 閱讀 9834

今天使用程式實現了一下線性表。

這次突破了一下自己使用了類模板,以前我都是直接在函式宣告之後馬上就實現,但是今天我想讓整個類變得更加簡明扼要一些,所以採用了類外實現。

然後類外實現發現我們還要有一些要注意的地方~就是實現函式之前,都要加一些宣告的東西

template

......list::......

這個注意一下就好了哈哈哈

我來談一下對這個程式的理解吧。

首先引入眼簾的是我們的成員物件。

每個順序表(陣列)都有自己的大小,所以說maxsize不難理解。

cursize是乙個記錄當前線性表大小的資料成員,之所以有這個資料成員存在,主要是因為我們的線性表是乙個動態的過程,不斷的插入、刪減都會對當前的線性表的大小有影響,我們對於線性表的操作都是基於當前位置,然而當前位置的合法性又與我們的當前線性表大小有莫大的關係,所以說這個資料成員也是非常重要的。

*arr就更加不用多加贅述了,因為我們就是基於順序表實現的線性表。

因為我們線性表的操作都是基於當前位置,所以我們設定curr就是我們的當前位置

在這裡其實我很想談一下兩個基本操作

乙個是clear函式

乙個是insert函式

clear函式

clear函式可以怎麼實現呢?其實我覺得,clear函式就是起到乙個清空的操作,就是我們不還記憶體,但是其他的所有資料成員都要回到最開始的情況。我們可以怎麼實現呢?其實我們可以delete了我們一開始new出來的連續的記憶體,然後我們把maxsize=0,cursize=0,curr=0,,再重新new一片記憶體給arr。

或許有的同學會說,這樣子有點怪怪的,但是我覺得,內存在哪有什麼關係呢?在哪不都是連續的一片記憶體嗎,所有的基本操作都是可以完成的。

insert函式

1、insert函式我經常忘記了判斷當前位置的合法性,就像如果我們的線性表已經是最大容量了,那麼我們的操作就不可能進行了,因為這會超出我們的maxsize

以上就是我的一些心得hh

對了還有,記得**記憶體!不要記憶體洩漏了,要不然你寫著寫著後來的程式就無法run了

0#includeusing namespace std;

templateclass list

;template list::list(int size)

template list::~list()

template void list::clear()

}template bool list::insert(e elem)

arr[curr] = elem;

cursize++;

return true; }}

template bool list::remove(e elem)

}template void list::movetobegin()

template void list::movetoend()

templatebool list::setpos(int pos)

else

return false;

}templatevoid list::current(e elem)

template bool list::prev()

else

return false;

}template bool list::next()

}template e list::getvalue()

template int list::getpos()

template int list::getlen()

templatevoid list::tran()

}

線性表順序實現

線性表實現,建立表,插入元素,刪除元素,銷毀表,表的遍歷,表的並集交集差集。不斷更新中。include include include include define list init size 100 初始大小 define error 0 define listincrement 10 增量大小...

線性表 順序表的實現

順序表vs2010除錯 include include include include define list init size 50 struct seqlist 初始化順序表 int fninitlist struct seqlist l l length 0 l max size list ...

Java實現線性表(順序表)

線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。線性表可通過一維陣列來實現其順序儲存結構,即把第乙個資料元素存放到陣列下標為0的位置中,接著把線性表相鄰的元素儲存到陣列中相鄰的位置。順序儲存結構的優缺點 優點 1.無需為表中元素之間的邏輯關係而增加額外的儲存空間 2.可...