反转链表
输入只能输入0~9的数字字符串
#include<iostream>
#include<algorithm>
#include<string>
#include<queue>
using namespace std;
class LinkNode{
public:
int val;
LinkNode *next;
LinkNode() :val(0), next(nullptr){}
LinkNode(int value) :val(value), next(nullptr){}
};
LinkNode* creatLink(string s) {
if (s.empty()) {
return nullptr;
}
LinkNode *head = new LinkNode(s[0]-'0');
LinkNode *p = head;
for (int i = 1;i<s.size();++i) {
if (s[i]== ' ') {
}
else {
LinkNode *node = new LinkNode(s[i]-'0');
p->next = node;
p = node;
}
}
return head;
}
LinkNode* reverseLink(LinkNode *head) {
if (head == nullptr) {
return nullptr;
}
LinkNode *pre = nullptr;
LinkNode *cur = head;
while (cur) {
LinkNode *temp=cur->next;
cur->next = pre;
pre= cur;
cur = temp;
}
return pre;
}
int main() {
string input;
getline(cin,input);
LinkNode *head = creatLink(input);
LinkNode *revNode = reverseLink(head);
//LinkNode *head = new LinkNode(1);
//LinkNode *a = new LinkNode(2);
//LinkNode *b = new LinkNode(3);
//LinkNode *c = new LinkNode(4);
//LinkNode *d = new LinkNode(5);
//LinkNode *e = new LinkNode(6);
//head->next = a;
//a->next = b;
//b->next = c;
//c->next = d;
//d->next = e;
//e->next = b;
while (revNode) {
cout << revNode->val << " ";
revNode = revNode->next;
}
cout << endl;
system("pause");
}