[英]Single Linked List Reverse
我正在尝试学习链表。 我有点麻烦。 我已经学习了一些基本概念。 例如在列表中阅读数字,如下所示:我的问题是:
我该怎么办? 我不想要完整的解决方案,只是一些提示。 如果有人可以画出任何关于如何反向链接列表的图表,将不胜感激。
#include <stdio.h>
#include <stdlib.h>
struct node {
int data;
struct node *next;
};
int main (int argc, char *argv[]){
struct node *pNew, *pHead, *pCurr;
int i, dataEntered, numberOfNodes;
printf("Please enter the amount of nodes: ");
scanf("%d", &numberOfNodes);
for (i = 0; i < numberOfNodes; i++){
printf("Enter data for node %d : ", numberOfNodes-i);
scanf("%d", &dataEntered);
pNew = malloc (sizeof(struct node));
pNew -> data = dataEntered;
pNew -> next = pHead;
pHead = pNew;
}
pCurr = pHead;
for (i = 0; i < numberOfNodes; i++){
printf("Node %d has a data value of: %d\n", i, pCurr->data);
pCurr = pCurr->next;
}
return 0;
}
让我给你一点代码。
struct node *nex, *curr, *pre;
curr = phead;
pre = 0;
while(curr)
{
nex = curr->next;
curr->next = pre;
pre = curr;
curr = nex;
}
phead = pre;
对于链表反转,这非常简单,只需创建一个新的链表,然后将新节点放在链表的末尾(始终从第二个LList的头开始遍历,直到当前节点的下一个为null为止,然后将pNew放入当前-> next)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.