摘要: 和单链表差不多,就不多说了。特别注意在插入和删除链表元素操作时,仔细考虑该元素与相邻元素的前向指针、和后续指针的改变。struct Node { int val; Node* pret; Node* next;};Node* cre_list(int n) //创建双向链表 n代表元素个数{ Node* head_temp = NULL; if (n > 0) { Node* head = new Node; head->val = rand()%100; head->pret = NULL; ... 阅读全文
posted @ 2012-07-06 15:18 Itachi7 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 链表是笔试面试经常考的内容,这次没有看书,完全按照自己的思路完成链表基本实现。1. 单链表的创建这里之前由于申请连续空间导致不可预见的错误,感谢花花帮我指出错误。struct Node { int val; Node * next;};Node* creat_list(int n) //创建单链表 n为元素个数{ Node* head = NULL; Node* head_temp = NULL; if (n > 0) { head = new Node; head_temp = head; /... 阅读全文
posted @ 2012-07-06 11:12 Itachi7 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 公有继承时基类中各成员属性保持不变,基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象只能访问基类中的public成员。私有继承时基类中各成员属性均变为private,并且基类中private成员被隐藏。派生类的成员也只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。 保护继承时基类中各成员属性均变为protected,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问p 阅读全文
posted @ 2012-07-03 22:48 Itachi7 阅读(9006) 评论(0) 推荐(2) 编辑
摘要: 解题思路主要是从回文数的构造出发,貌似一般与回文数有关的都是构造回文数,而不是去搜索。分为多种情况:A. 该数的长度是奇数(只有1位很好办,除9外直接加1,9的话输出11),取出该数的前半截(包括中间数), 1.若该数是回文数,则用前半截数值加1,之后再构造新的回文数; 2.不是回文数,从中间往两边找到第一个不相等(因为不是回文数,所以肯定能找到)的数,若前面的小于后面的,则按1处理(用前半截数值加1,之后再构造新的回文数); 若前面的大于后面的,则直接用前半截来构造回文数。B. 该数的长度是偶数,取出前半截(正好是一半),思路和奇数的差不多, 如果是回文数或前半截小,则把前半截+1后... 阅读全文
posted @ 2012-07-03 11:39 Itachi7 阅读(4148) 评论(0) 推荐(0) 编辑
摘要: 1. 如何用虚函数实现多态 1 class A 2 { 3 public: 4 virtual void print() 5 { 6 cout<<"THIS IS A"<<endl; 7 } 8 }; 9 class B:public A10 {11 public:12 void print()13 {14 cout<<"THIS IS B"<<endl;15 }16 };17 int main()18 {19 A a;20 B b;21 A* p1 = &a;22 A* p2 = ... 阅读全文
posted @ 2012-07-02 21:03 Itachi7 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 1.给定一个数组,找到所有和为给定值A的数对(两个数) 思路:先将数组排序,然后从两端开始找。 代码: 1 sort(arr,arr+10); 2 int start = 0; 3 int end = MAX - 1; 4 while (start < end) 5 { 6 if (arr[start] + arr[end] < A) 7 { 8 ++start; 9 }10 else if (arr[start] + arr[end] > A)11 {12 ... 阅读全文
posted @ 2012-06-28 23:31 Itachi7 阅读(162) 评论(0) 推荐(0) 编辑