前提・実現したいこと
C言語の線形リスト(ノード)について質問です。
newPtr = (STUDENTName*)malloc(sizeof(STUDENTName));
newPtr->letter= '%'
の部分(現時点の22,23,27,28,32,33,44,45行目)をいじらずに結果をU->S->E->N->R->NULLにするにはどうすればいいでしょうか?なかなかうまくいきません。解説もつけていただくとありがたいです。
Sが消えることと、残りのアルファベットを間に入れられません。
#該当のソースコード
#include <stdio.h> #include <stdlib.h> #include <string.h> struct studentname { char letter; struct studentname *next; }; typedef struct studentname STUDENTName; typedef STUDENTName *STUDENTNamePtr; int main() { STUDENTNamePtr startPtr = NULL; STUDENTNamePtr newPtr; STUDENTNamePtr prevsPtr; STUDENTNamePtr crntPtr; STUDENTNamePtr tempPtr; newPtr = (STUDENTName*)malloc(sizeof(STUDENTName)); newPtr->letter= 'S'; newPtr->next=NULL; startPtr=newPtr; newPtr = (STUDENTName*)malloc(sizeof(STUDENTName)); newPtr->letter= 'U'; startPtr->next =newPtr; newPtr->next = NULL; newPtr = (STUDENTName*)malloc(sizeof(STUDENTName)); newPtr->letter= 'R'; newPtr->next=startPtr; startPtr=newPtr; newPtr = (STUDENTName*)malloc(sizeof(STUDENTName)); newPtr->letter= 'E'; newPtr->next = startPtr; startPtr=newPtr; crntPtr=startPtr->next; newPtr = (STUDENTName*)malloc(sizeof(STUDENTName)); newPtr->letter= 'N'; startPtr->next=newPtr; newPtr->next=crntPtr; crntPtr=startPtr; while(crntPtr !=NULL) { printf("%c -> ", crntPtr->letter); crntPtr=crntPtr->next; } printf("NULL"); printf("\n"); return 0; }
試したこと
この時点で、Sが消えることと、残りのアルファベットを間に入れられません。
newPtr = (STUDENTName*)malloc(sizeof(STUDENTName)); newPtr->letter= 'S'; newPtr->next=NULL; startPtr=newPtr; newPtr = (STUDENTName*)malloc(sizeof(STUDENTName)); newPtr->letter= 'U'; newPtr->next=startPtr; startPtr=newPtr; newPtr = (STUDENTName*)malloc(sizeof(STUDENTName)); newPtr->letter= 'R'; startPtr->next =newPtr; newPtr->next = NULL;