我是一个小菜鸡,却总想和大神比——迈哈特·信令
很多东西你有一个idea结果发现,800年前就有人做过了,而且比你做的更好,效率更高
题目:给你一个单链表,在不分配新的空间不创建新的头节点的情况下,将其翻转,
1->2->3
3->2->1
//这里直接放正解
//我是二重循环翻转,写完总感觉不对,因为自己写的太复杂
//总之是我想多了
//教训写代码要规范,简洁,正确,优美
#include<cstdio>
struct Node {
int val;
Node * next;
Node(int v, Node* nxt) :val(v), next(nxt) {}
};
void prinls(Node* h) {
while (h != NULL) {
printf("%d->", h->val);
h = h->next;
}
puts("END");
}
Node* reserve(Node* h) {
Node *r, *t;
//one node
r = h->next;
if (r == NULL) return h;
//more
h->next = NULL;
t = r->next;
r->next = h;
while (t != NULL) {
h = r;
r = t;
t = t->next;
r->next = h;
}
return r;
}
int main()
{
Node *head = new Node(0, NULL);
for (int i = 3; i > 0; i--) {
Node * t = new Node(i,head->next);
head->next = t;
}
prinls(head);
Node *r = reserve(head);
prinls(r);
getchar();
waitKey(0);
return 0;
}
//自我介绍也肯定扣了分的
//项目经验就是0
//根本没用Linux分析过log,所以我对Linux都不行
//基础不牢地动山摇
//一定是我忘记上传证书的原因
//回去再复习复习吧