1.面試中出這樣的題,算你狠。
參考:如何使用C++11實現跨平臺的定時器timer? ; Linux 下定時器的實現方式分析
2.兩種思路。
一是算出所有的
三.
1.頭插法建立單鏈表。
實現代碼:
Node* ReverseList(Node* head) {
Node* prev = NULL; //指向上一個結點
Node* curr = head; //指向當前結點
while (curr) {
Node* next = curr->next; //指向下一個結點
curr->next = prev; //關鍵步
prev = curr;
curr = next;
}
return prev;
}
測試用例:
Node node5 = { 5, NULL };
Node node4 = { 4, &node5 };
Node node3 = { 3, &node4 };
Node node2 = { 2, &node3 };
Node node1 = { 1, &node2 };
2.直接使用STL裏的sort()函數來做
,其中排序方法通過自定義一個函數對象來完成。
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
struct Item {
string name; //學生姓名的字符串
int english_score; //英語分數
};
class MyLess {
public:
bool operator() (Item a, Item b) {
return a.english_score<b.english_score;
}
};
int main() {
Item st[] = { { "fengzi", 98 },{ "midan", 30 },{ "xiaoyu", 100 },{ "asi", 60 },{ "huazhou", 59 },{ "jimu", 70 } };
sort(st, st + 6, MyLess());
for (int i = 0; i<6; i++) {
cout << st[i].name << " ";
}
return 0;
}