C 線性表的實現

2022-02-08 22:05:37 字數 3914 閱讀 5254

1

//線性表的實現,main函式裡是所有函式的測試!有興趣的可以參考!高手請指正~

23 #include 4 #include 5 #include 6

using

namespace

std;78

const

int defaultsize=100;9

10 template

11class

seqlist

1222

int size()

23int length()

24int locate(t &x); //

如果形參表裡寫(t x),有什麼區別呢?

//用引用形式比較方便,因為x的形式有可能非常複雜

//定義為引用就不可以直接傳遞乙個常數

25 t getdata(int i); //

第i個表項的值

26void

input();

27void

print();

28bool remove(int

i);29

bool remove1(t &x,int i); //

位置刪除和元素刪除,這是不同的!!!但是區別不大啊

30bool insert(int i,t &x); //

預設插入最後的位置

31 seqlistoperator=(seqlist& l); //

順序表整體相等

32void union(seqlist& la,seqlist&lb);

33void intersection(seqlist&la,seqlist&lb);

34 }; //

有分號35

36 template

37 seqlist::seqlist(int sz) //

帶有形參

3849

}50 cout<

這裡是建構函式!

"<

5253 template

54 seqlist::seqlist(seqlist& l) //

複製建構函式

5564

for(int i=0;i<=last+1;i++)

65 data[i-1]=l.getdata(i);

66 cout<

這裡是複製建構函式!

"<

6869 template

70 t seqlist::getdata(int

i)71

77else

78return data[i-1

];79}80

81 template

82void seqlist::resize(int

newsize)

8389

if(newsize!=maxsize)

9097

int n=last+1

;98 t *srcptr=data;

99 t *destptr=newarray;

100while(n--) //

賦值101

*destptr++=*srcptr++;

102delete data;

103 data=newarray;

104 maxsize=newsize;

105}

106}

107108 template

109int seqlist::locate(t &x)

110116

return

0; //

沒有找到該元素

117}

118119 template

120bool seqlist::insert(int i,t &x)

121126

if(i<0||i>last)

127131

for(int j=last;j>=i;j--)

132138

}139

140 template

141bool seqlist::remove(int

i)142

148else

149154 last--;

155return

true

;156

}157

}158

159 template

160void seqlist::input()

161172**/

173while(1) //

為了實現錯誤的再輸入

174183

else

if(last>maxsize-1) //

當last>maxsize-1時,對陣列進行擴大

184187

else

188break

;189

}190 cout<

依次輸入表中的元素

"<

191for(int i=0;i<=last;i++)

192199

}200

201 template

202void seqlist::print()

203208

209 template

210 seqlistseqlist::operator=(seqlist&l)

211222

223 template

224bool seqlist::remove1(t &x,int

i)225

231else

232237 last--;

238return

true

;239

}240

}241

242 template

243void seqlist::union(seqlist&la,seqlist&lb)

244258

}259

}260

261 template

262void seqlist::intersection(seqlist&la,seqlist&lb)

263276

}277

}278

279280

int main() //

main函式不知道為什麼會有乙個錯誤啊。。。。。。。。。。。。。。。。

281322 cout<

323//

這函式怎麼呼叫呢?

324 seqlistc;

325c.union(a,b);

326a.print();

327328

for(int i=0;i<80;i++)

329332 cout<

333c.intersection(a,b);

334a.print();

335for(int i=0;i<80;i++)

336339 cout<

340return0;

341 }

view code

同時在  也有乙份線性表的,寫的也是比較清晰的,和我的差不多,大家可以參考一下,實現的功能和實現方式區別都不大的!

C 實現順序表(線性表)

基本思想是使用陣列作為盛放元素的容器,陣列一開始的大小要實現確定,並使用乙個pointer指向順序表中最後的元素。順序表中的元素是陣列中元素的子集。順序表在記憶體中是連續的,優勢是查詢,弱勢是插入元素和刪除元素。為避免裝箱拆箱,這裡使用泛型,代替object。使用object的例子可以參照這個鏈結中...

C 簡易線性表實現。

哦,看了siki的資料結構教程,自己嘗試實現了一下。介面類如下,主要就實現了這幾個,using system namespace dsl gets the index of the element by.the element by index.index.t getelementbyindex i...

C 實現動態線性表

之前在學習c語言的時候用c語言實現了動態線性表。現在再使用c 實現一下動態線性表。相關資料結構方面就不多說了。在之前的部落格裡也有。下面就直接來實現吧。這裡使用指標來遍歷陣列,這樣在算size,capacity的時候,直接用指標相減的方式就可以得到元素個數,以及容量。vector.h include...