例としてこの値を持つリンクされたリストがあります: 4 5 3 2 7、次のように、各ノードを前のノードと交換したいと思います:
4 5 3 2 7 // this beginning of list
5 4 3 2 7
5 3 4 2 7
5 3 2 4 7
5 3 2 7 4 // the list should now become like this
しかし残念ながら、出力を解析すると、無限ループに陥りました。
#include <stdio.h>
#include <stdlib.h>
typedef struct _node {
int p;
struct _node *next;
} node;
main(int argc, char **argv)
{
int i, n;
node *nod = NULL;
node *nod_tmp = NULL;
node *nod2 = NULL;
printf("Enter n: ");
scanf("%d", &n);
for(i = 0; i < n; ++i)
{
nod_tmp = (node *)malloc(sizeof(node));
scanf("%d", &nod_tmp->p);
nod_tmp->next = nod;
nod = nod_tmp;
}
i = 0;
while(i < n)
{
nod_tmp = nod;
nod = nod->next;
nod->next = nod_tmp;
++i;
}
while(nod != NULL)
{
printf("%d\n", nod->p);
nod = nod->next;
}
return 0;
}