本文旨在记录单链表翻转,便于日后学习
代码如下:
#include <iostream>
#include <string>
using namespace std;
struct node
{
int val;
struct node *next;
};
node *reverse_list(node *p)
{
node *tmp=NULL;
while (p)
{
node *k = p->next;
p->next = tmp;
tmp = p;
p = k;
}
return tmp;
}
int main(int argc, char *argv[])
{
string s1;
getline(cin,s1);
node *head = (node *)malloc(sizeof(node));
node *p = head;
for (int i = 0; i < s1.size(); i++)
{
p->val = s1[i] - '0';
node *new_node = (node *)malloc(sizeof(node));
if (i == s1.size() - 1)
{
p->next = NULL;
break;
}
p->next = new_node;
p = p->next;
}
node *k = reverse_list(head);
while (k)
{
cout << k->val << " ";
k = k->next;
}
return 0;
}