#include<iostream>
using namespace std;
typedef struct node { //使用typedef,可用再后面定义新的结构体名,不然就只能用node
/*string name;
int age;*/
int val;
node* next;
}L;
L* create(int n)
{
L* head = nullptr;
L* pre = nullptr;
for (int i = 1; i <= n; i++)
{
L* cur = new L;
cur->val = i;
cur->next = nullptr;
if (head == nullptr)
{
head = cur;
pre = cur;
}
else {
pre->next = cur;
pre = cur;
}
}
return head;
}
L* reset(L* head) {
L* pre = nullptr;
L* cur = nullptr;
while (head)
{
cur = head->next; //把第一个节点里保存的第二个节点的地址保存到cur中
head->next = pre; //把pre的地址保存到第一个节点中,又因为head和pre会指向同一个地方,
//所以后面的循环中head->next内保存的是上一个节点的地址
pre = head;
head = cur;
}
return pre;
}
void printlist(L* head) {
while (head)
{
cout << head->val;
head = head->next;
if (head)
cout << "->";
}
cout << endl;
}
int main()
{
L* head = create(10);
printlist(head);
head = reset(head);
printlist(head);
return 0;
}
自学写的,可用运行。