2016-12-21 3 views
0

構造体からデータをコピーして作成したcのリンクリストを逆転しようとしています。Cのリンクリストの逆アルゴリズム

私はreverselistという名前の関数を作成しましたが、リストを逆にすることについての多くの提案を読んだが、それを適用して印刷を再試行しても画面に何も表示されません。

私はファイルを印刷するだけではなく、リンクされたリストを永久に変更したいと思います。誰かが自分のコードで何が問題になっているかを知ることができますか?

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 

int i,j,temp; 

typedef struct{ 
    int nr; 
}PASSENGERS; 

typedef struct list1{ 
    int nr; 
    struct list1 *next; 
}LIST1; 


LIST1* reverselist (LIST1 *head) 
{ 
    LIST1 *cursor=NULL; 
    LIST1 *next; 
    while(head){ 
     next=head->next; 
     head->next=cursor; 
     cursor=head; 
     head=next; 
    } 
    return cursor; 
} 

int main() 
{ 
    PASSENGERS passenger[53]; 
    for (j=0;j<53;j++) 
     passenger[j].nr=j+1; 

    PASSENGERS *start=NULL; 
    char selection; 
    do{ 
     printf("0. Exit and Print File\n"); 
     scanf(" %c",&selection); 
    } while (selection!='0'); 

    LIST1 *list1, *start=NULL; 
    for (i=0;i<53;i++){ 
     list1 = (LIST1 *) malloc (sizeof(LIST1)); 
     list1->next = NULL; 
     list1->nr = passenger[i].nr; 

     if (start ==NULL) 
      start = list1; 
     else //add new node at the beginning of list 
     { 
      list1->next = start; 
      start = list1; 
     } 
    } 

    LIST1 *current = list1; 
    printf("The original list is:"); 
    while (current !=NULL) /* Printing the names on the list ok*/ 
    { 
     printf("%d\n",current->nr); 
     current = current->next; 
    } 

    LIST1* head = NULL; 
    head=reverselist(head); 

    printf("The reversed list is:"); 

    while (current !=NULL){ 
     printf("%d\n",current->nr); 
     current = current->next; 
    } 
} 
+2

単一リンクされたリスト内のアイテムをどのように逆転させるかについてのエスティメーション。それらのどれも見つけることはできません。 –

+0

さて、私は多くの方法を見つけました。それらのいくつかを適用しようとしました。ソリューションに最も近いと思われるものは、私がここに投稿したものですが、まだ動作させるように見えません。提案、私はまだ解決策を見つけるためにこことそこに読書に焦点を当てています! ! – baskon1

答えて

1

NULLreverselistにあなたが渡しているので、このコードは、明らかに間違っている:私は、これがなければならないことを推測している

LIST1* head = NULL; 
head=reverselist(head); 

current = reverselist(list1); 

(あなたがいませんここでは head変数を使用する必要はありません)

+0

ありがとう、それは私の目の前にありましたが、問題を見つけることができませんでした! – baskon1

+0

@ baskon1 - 今までStackOverflowであなたが質問した16の質問のうち、1つの答えしか受け入れていません。あなたは答えを受け入れる必要はありませんが、あなたが直面している問題が解決したときに努力する必要があります。 –

+0

申し訳ありません今からやろう!ありがとう! – baskon1

関連する問題