我想学链表。我有点小麻烦。我学到了一些基本概念。如阅读列表中的数字,如下所示:我的问题是:
有谁能给我一些关于如何改进这段代码的提示吗?我知道这里很乱。
如果我要反转这个链表(保持地址和内容相同),但要操作指针。
我该怎么做?我不想要完整的解决方案,只是一些提示。如果有人能给我画一些图表,告诉我如何反转链接列表,我将不胜感激。

#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;
}

最佳答案

对于链表反转,它非常简单,只需创建一个新的链表,将新节点放在列表的末尾(始终从第二个LList的头部遍历,直到当前节点的next为空,然后将pNew放到这个current->next)

关于c - 单链表反向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17993866/

10-12 00:23
查看更多