2 list stack struct node int info node

  • Slides: 10
Download presentation

習題2: 作業: list stack struct node {int info; node* next; }; class list {

習題2: 作業: list stack struct node {int info; node* next; }; class list { node *head, *tail ; int node_no ; public: list() ; list(const node& n) ; list(const list& L) ; ~list() ; int get. Size() ; void insert(int pos, int value) ; // 0: first, node_no: last void delete(int pos) ; // 刪除第pos個元素 void show(string msg) ; //印出串列內容 list& operator=(const list& L) ; friend list operator+(const list& L 1, const list& L 2) ; //聯集 friend list operator*(const list& L 1, const list& L 2) ; //交集 friend list operator-(const list&L 1, const list& L 2) ; //差集 };

使用list產生stack class stack: public list { stack() ; ~stack() ; operator=(const stack& s) ;

使用list產生stack class stack: public list { stack() ; ~stack() ; operator=(const stack& s) ; void push(int x) ; //加在list的最前端 int pop() ; //刪除list的第一個元素 // list中的operator+, -, * 是否也被繼承? };

測試class list void main() { list L 1, L 2, L 3 ; for

測試class list void main() { list L 1, L 2, L 3 ; for (int i = 101; i<=108; i++) L 1. insert(L 1. get. Size(), i) ; for (int j = 110; j>=105; j--) L 2. insert(0, j) ; L 1. show(“L 1=“); L 2. show(“L 2=“) ; L 3 = L 1 + L 2 ; L 3. show(“L 3=L 1+L 2=“) ; L 3 = L 1 * L 2; L 3. show(“L 3=L 1*L 2=“) ; L 3 = L 1 – L 2; L 3. show(“L 3=L 1 -L 2=“) ; L 3. delete(1) ; L 3. delete(2) ; L 3. show(“after 2 delete, L 3=“) ; stack s 1, s 2 ; for (int k=1; k<=10; k++) { if (k%3==0) s 1. pop(); s 1. push(k) ; s 1. show(“s 1=“) ; } s 2 = s 1; s 2. show(“s 2=“) ; }

練習 class student { protected: string stud. ID, name, e. Mail ; public: void

練習 class student { protected: string stud. ID, name, e. Mail ; public: void fill. Data()=0 ; void get. ID() { return ID; } void show()=0 ; }; class Local. Student: public student { string ID ; …… } class Abroad. Student: public student { string passport. ID; string country ; …… }

習題4: 自我挑戰: 完成以下Sorted. List void main() { Sorted. List<int> L 1; L 1. insert(10);

習題4: 自我挑戰: 完成以下Sorted. List void main() { Sorted. List<int> L 1; L 1. insert(10); L 1. insert(25) ; L 1. insert(13); L 1. insert( 20) ; cout << L 1 << endl ; // 10 13 20 25 Sorted. List<Frac> L 2; L 2. insert(Frac(3, 5)); L 2. insert( Frac(2, 5)) ; L 2. insert(Frac(1, 13)); L 2. insert(Frac(4, 20)) ; cout << L 2 << endl ; // 1/13 1/5 2/5 3/5 Sorted. List<int>> LL ; LL. insert(L 1); cout << LL <<endl ; }

習題5: EX: 測試stack template void main() { stack<int> s 1 ; for (int i

習題5: EX: 測試stack template void main() { stack<int> s 1 ; for (int i = 0 ; i<5; i++) s 1. push(i) ; cout << s 1 << endl ; stack<complex> s 2 ; for (int i = 0 ; i<5; i++) s 2. push(complex(i, i)) ; cout << s 2 << endl ; stack<int>> ss ; ss. push(s 1) ; cout << ss << endl ; }