1

リンクされたリストを学習しようとしています。私は少し問題を抱えています。いくつかの基本的な概念を学びました。ここに示すように、リスト内の数字を読み取るなど: 私の質問は:

  1. このコードを改善するためのヒントを教えてもらえますか? 私はそれがかなり厄介であることを知っています。
  2. このリンクされたリストを逆にして (アドレスとコンテンツを同じに保ちながら)、ポインターを操作するとします。

どうすればいいですか?完全な解決策は必要ありません。ヒントだけです。リンクされたリストを逆にする方法について誰かが私に図を描くことができれば、それはありがたいです。

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

2 に答える 2

0

少しコードを教えてください..

struct node *nex, *curr, *pre;
curr = phead;
pre = 0;
while(curr)
{
       nex = curr->next;
       curr->next = pre;
       pre = curr;
       curr = nex;
}
phead = pre;
于 2013-08-01T12:25:28.677 に答える