1view code//線性表的實現,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 }
同時在 也有乙份線性表的,寫的也是比較清晰的,和我的差不多,大家可以參考一下,實現的功能和實現方式區別都不大的!
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...