又有一段時間沒有更新部落格了。在家久了變的異常敏感,什麼都會去想,想多了又會自閉。不管咋樣,生活還在繼續,無法逃避。該面對的還是要直面,就希望安穩畢業,順利入職。
開始資料結構與c++的混合訓練模式。看別人的**寫**,好像啥都懂。拿開自己寫,好像啥都不知道。先從最基本的線性鍊錶的順序儲存結構學起吧。先上**(包含如下函式功能):
//使用陣列儲存資料,建立了linearlist類,並用類模板實現
linearlist()
;//預設建構函式
linearlist
(t *s)
;//傳入陣列作為初始化值
linearlist
(const linearlist & lt)
;//複製建構函式
bool
listempty()
const
;//判斷列表是否為空
bool
listfull()
const
;//判斷列表是否裝滿
t getelem
(int i)
;//得到下標為i的元素
bool
locateelem
( t e,
int&l)
const
;//列表中是否有元素e,如果有返回其下標l
bool
listinsert
(int i, t e)
;//在下標i處插入元素e,並返回是否插入成功
bool
listdelete
(int i, t &e)
;//刪除下標i處的元素,並返回是否刪除成功
const
intlistlength()
;//返回列表的長度
void
show()
const
;//展示列表的值
linearlist &
operator=(
const linearlist & lt)
;//賦值函式
linearlist &
operator+(
const linearlist & lt1)
;//加法運算子過載
實現過程中遇到的幾個問題需要注意:
1、類模板必須與特定的模板例項化請求一起使用,即要放在乙個檔案下,不能宣告和定義分別放在兩個檔案裡;
2、陣列型別不能陣列間直接賦值,需要迴圈賦值;
3、模板函式在定義時都需要之前加上template
<
typename type>並且要在函式名處也要定義引數;
有關線性鍊錶的順序儲存結構知識點,就不再贅述。我是對照《大話資料結構》學習的,目前為止感覺講的很不錯,淺入深出。此外,實現方法肯定有更加簡單或者需要優化的地方,歡迎批評指正。
線性鍊錶的順序儲存結構標頭檔案
#pragma once
#ifndef linearlist_h_
#define linearlist_h_
#include
using
namespace std;
#define maxsize 100
template
<
typename t>
class
linearlist
;template
<
typename t>
linearlist
::linearlist()
template
<
typename t>
linearlist
::linearlist
(t *s)
template
<
typename t>
linearlist
::linearlist
(const linearlist & lt)
template
<
typename t>
bool linearlist
::listempty()
const
template
<
typename t>
bool linearlist
::listfull()
const
template
<
typename t>
t linearlist
::getelem
(int i)
template
<
typename t>
bool linearlist
::locateelem
(t e,
int&l)
const
return
false;}
template
<
typename t>
bool linearlist
::listinsert
(int i, t e)
template
<
typename t>
bool linearlist
::listdelete
(int i, t &e)
length -=1
;}template
<
typename t>
const
int linearlist
::listlength()
template
<
typename t>
void linearlist
::show()
const
template
<
typename t>
linearlist
& linearlist
::operator=(
const linearlist
& lt)
template
<
typename t>
linearlist
&linearlist
::operator+(
const linearlist
& lt1)
#endif
// !linearlist
線性鍊錶的順序儲存結構使用示例
#include
#include
"linearlist.h"
#include
#include
using
namespace std;
void
main()
int lac;
if(data2.
locateelem
('s'
, lac)
)else
cout <<
"no find!"
<< endl;
linearlist<
char
>
data3
(data2)
; cout <<
"data3 = "
; data3.
show()
; linearlist<
char
> data4;
data4 = data3;
cout <<
"data4 = "
; data4.
show()
; linearlist<
char
> data5;
data5 = data3 + data4;
data5.
show()
;while
(!data2.
listempty()
)else
cout <<
"delete falied! \n"
; cout <<
"data2 = "
; data2.
show()
;}}
線性表順序儲存結構基本操作
線性表 線性表 list 每個元素型別均為datatype。operation initlist l 初始化操作,建立乙個空的線性表l。listempty l 若線性表為空,返回 true 否則返回 false。clearlist l 將線性表清空。getelem l,i,e 將線性表 l中的第 i...
線性表的順序儲存 線性表的順序儲存結構
1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...
線性順序表基本運算(順序儲存)
include include define maxsize 30 typedef struct seqlist void init list seqlist l 線性表順序表初始化 int insert seqlist l,int i,int elem 線性表順序表插入 int delet lis...