단일 링크 된 목록의 첫 번째 요소와 마지막 요소를 서로 바꾸려고합니다. 지금까지 나는 목록을 만들고 그것에 숫자를 추가하는 다음 코드를 가지고있다. 내 문제는 swapElements1 함수입니다.C - 단일 링크 된 목록의 첫 번째 요소와 마지막 요소 교환
#include <stdio.h>
#include<stdlib.h>
struct node
{
int number;
struct node *next;
};
void addNodeSingle(struct node **head, int num, int thesi) //Function to insert new node at the beginning or the end of the list, depending on the value of "thesi"
{
if (*head == NULL)
{
struct node *current;
current = (struct node*) malloc (1*sizeof(struct node));
current -> number = num;
current -> next = NULL;
*head = current;
}
else
{
if (thesi == 0)
{
struct node *current;
current = (struct node*) malloc (1*sizeof(struct node));
current -> number = num;
current -> next = *head;
*head = current;
}
else
{
struct node *current, *temp;
current = (struct node*) malloc (1*sizeof(struct node));
current -> number = num;
temp = *head;
while (temp -> next != NULL)
temp = temp -> next;
temp -> next = current;
current -> next = NULL;
}
}
}
void displayList(struct node **head) //Function to display the list
{
struct node *current;
if(*head == NULL)
printf("I lista einai adeia!\n");
else
{
current= *head ;
while(current != NULL)
{
printf("%d ",current -> number);
current = current -> next;
}
}
}
void swapElements1(struct node **head) //(not working)Function to swap first and last element of the list
{
struct node *current, *temp;
current = temp = *head;
while(current != NULL)
{
temp = current;
current = current -> next;
}
*head = (*head)->next;
*head = temp;
current = NULL;
}
int main()
{
struct node *head;
head = NULL;
addNodeSingle(&head,5,1);
addNodeSingle(&head,6,1);
addNodeSingle(&head,2,0);
addNodeSingle(&head,7,0);
addNodeSingle(&head,8,0);
printf("List is: ");
displayList(&head);
swapElements1(&head);
printf("\nNew list is: ");
displayList(&head);
}
내가 얻을 출력은 다음과 같습니다
목록은 다음과 같습니다 8 7 2 5 6
새 목록은 다음과 같습니다 6
내가이 필요한 것 :
목록은 다음과 같습니다 8 7 2 5 6
새 목록 : 6 7 2 5 8
,여기이 분명히 잘못이다 demo
머리글, 첫 번째 항목의 다음 포인터, 두 번째 - 마지막 항목의 다음 포인터 및 마지막 항목의 다음 포인터는 업데이트 할 수있는 포인터가 4 개 있습니다. – user3386109
노드 대신 데이터의 직선 스와핑을 고려 했습니까? 아니면 이것을 필요로하는 학교 운동입니까? –
@WeatherVane 불행히도, 나는 노드뿐만 아니라 데이터를 교환하고 싶습니다. – user3120283