構造体からデータをコピーして作成した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;
}
}
単一リンクされたリスト内のアイテムをどのように逆転させるかについてのエスティメーション。それらのどれも見つけることはできません。 –
さて、私は多くの方法を見つけました。それらのいくつかを適用しようとしました。ソリューションに最も近いと思われるものは、私がここに投稿したものですが、まだ動作させるように見えません。提案、私はまだ解決策を見つけるためにこことそこに読書に焦点を当てています! ! – baskon1