線性表之順序表

2021-05-23 08:15:35 字數 2361 閱讀 7212

資料結構草草學過,不過沒有認真運用過。 雖然知道一些最為基本的抽象型別及一些常用操作,不過叫我把這些基本的演算法寫出來我也

是寫不出來的。因為常說資料結構+演算法是乙個程式設計師最基本的素質,所以這次認真加以複習。在複習的同時我盡量將自己學習的其他的

一些基本知識比如c++中的物件導向思想也引入進來,同時也會將在複習中碰到其他的一些問題提出來,能解決的便解決,不能解決的可

以試著解決。

to be a programmer .

線性表是由 n (n >= 0) 個型別相同的資料元素a1, a2, a3, …, an 組成的有限序列,記作(a1, a2, … , ai-1, ai, ai+1, …, an

)。這裡的資料元素 ai(1<=i<=n)只是乙個抽象的符號,其具體的含義在不同情況下可以不同,它即可以是原子型別,也可以是結構類

型,但同一線性表中的資料元素必須屬於同一資料物件。

線性表有兩種基本的儲存結構:順序儲存結構和鏈式儲存結構。本文件只涉及順序儲存結構,順序結構通常可用高階程式語言中的數

組來表示。另外文章的組織結構分為三部分:開頭是簡單的介紹,之後是資料結構基本運算的**,最後是在複習中遇到的一些問題。

以下**實現了一些線性表最基本的運算,相比書上的程式例子,自己新增了三點,有些寫法是從參考別人的程式而得來的:

1) 運用了c++中的類模版概念;

2) 加入了c++中的異常捕獲;

3) 規範了程式的寫法,每個函式有了更為詳細的介紹資訊。

實現**分三個部分:seqlist.h定義順序表模版類,seqlist.cpp是對模版類的基本實

現,main.cpp是用於基本的測試。

因為自己在決定複習資料結構的同時也複習下一些linux的基本操作(學過,但是忘得也快),所以自己裝了乙個紅帽的虛擬機器(vmware),並通過ssh客戶端來與虛擬系統進行檔案傳輸操作。在對順序表進行實現的過程中主要碰到三個問題:

1)什麼是ssh(secure shell)?

我學會用這個東西時是在老師的介紹之下,之後也就知道了有這麼乙個工具可以完成與虛擬系統進行檔案的傳輸工作,不需要每次很麻煩的去裝vmware tools 或者設定所謂的共享目錄了,不過對於它是乙個什麼東西了解得不多。

我們所熟悉的ssh通常是指的一種基於ssh協議的、通用的、功能強大的網路安全解決方案。一般的unix系統、linux系統都附帶有支援ssh的應用程式包。ssh最主要的功能便是支援安全的網路資料傳輸。在具體的應用上,ssh是可以替代telnet及ftp的。

因為在虛擬系統中已經有了支援ssh的應用程式包,所以我們便可以通過乙個相對的客戶端程式與之進行連線並實現資料傳輸。

2)在vmware的網路連線設定方式上,有橋接、nat、host-only三種不同的連線方式,  它們有什麼區別,在通過ssh client進行連線的時候需要怎麼進行設定?

橋接模式下,虛擬出來的作業系統與宿主主機的關係就像(區域網)是連線在同乙個hub上的兩台主機,這是你需要為虛擬系統配置ip及netmask,並且倆系統還需處於同一網段,這樣倆系統便可進行通訊。並且,虛擬系統可以訪問區域網內任意一台主機。如果想利用vmware在區域網內新建乙個虛擬伺服器,為區域網使用者提供網路服務,就應該選擇橋接模式。

host-only模式下,虛擬系統的ip等配置均有vmnet1(host-only)虛擬網路的dhcp伺服器來動態分配的。如果想用vmware建立乙個與網內其他機器相隔離的虛擬系統,可以選擇此種模式。

nat模式下,虛擬系統借助nat功能,通過宿主主機所在的網路來訪問公網。這種模式下的ip資訊時通過vmnet8(nat)虛擬網路的dhcp伺服器提供的。無法修改,因此虛擬系統無法和本區域網中的其他真實主機進行通訊。

所以在設定ssh client的時候,可以選擇【橋接模式】或者【host-only】模式,在【橋接模式】下,只需要保證虛擬系統的ip位址與主機的ip位址處於同乙個網段即可進行通訊。在【host-only模式】下,必須要保證虛擬系統的ip位址與在本機上所虛擬出來的網絡卡的ip位址(vmware network adapter vmnet1)處在同一網段。

3)在用gcc進行編譯的時候便出現錯誤提示,但是用g++進行編譯卻沒有錯誤提示,很顯然,兩個編譯器是有所差別的?

gcc最初的全稱為 『gnu c compiler』,之後隨著高階程式語言的增多,gcc的全稱逐漸演變為了』gnu compiler collection』。

對於g++來說,它會將被編譯的檔案都當作c++檔案來看待,並且它會自動呼叫c++的標準庫。

對於gcc來說,它會根據原始檔的字尾名將它們區分開來,但是有一點不同的是gcc在編譯c++源程式時並不會主動鏈結相關的庫,所以需要額外指定引數。

如:gcc -lstdc++ testcpp.cpp -o testcpp

線性表之順序表

線性表 我們都知道是一種常用的資料結構,也是歷來各種考試的重點。今天抽了一些時間把線性表做了總結。線性表是n個資料元素的乙個有限序列。用公式表示為 l a1,a2,a3,a4,an 因為線性表是乙個有限的序列,所以也如上面公式所示,它的各個元素是相繼排放的。那麼它的每個相連的兩項之間都是有乙個邏輯關...

線性表之順序表

線性表的操作 initlist l 初始化操作,建立乙個空的線性表l。listempty l 判斷線性表是否為空表,空返回true,否則返回false。clearlist l 將線性表清空。getelem l,i,e 將線性表l中的第i個位置元素值返回給e。listdelete l,i,e 刪除線性...

線性表之順序表

一 線性表的定義 從邏輯結構的角度來講,線性表中各個元素之間是唯一的 並且有序排列的關係。從儲存結構的角度來看,線性表的具體實現過程中可採用順序儲存結構和鏈式儲存結構。順序儲存結構的線性表稱為順序表,鏈式儲存結構的線性表分為單鏈表和雙鏈表。二 順序表 include stdafx.h include...