0
저는 C가 처음입니다. 연결된 목록을 사용하여 두 개의 노드를 바꿔 쓰려고합니다. 무엇이 잘못되었는지 확실하지 않습니다. 그것은 나에게 오류가 있다고 말합니다.연결된 목록의 노드 스와핑
"temp"는 선언되지 않았습니다.
또한이 코드에서 char뿐만 아니라 int도 바꿀 수 있습니까? 무효 swapNodes에서
struct lnode {
int some_line;
int count;
char* some_word;
struct lnode* next;
};
void swapNodes(struct lnode** head, struct lnode* n1, struct lnode* n2);
int main()
{
struct lnode* head = NULL;
struct lnode* node0 = newCharNode(&head,"this is");
struct lnode* node1 = newCharNode(&head,"programming");
swapNodes(&head,node0,node1);
getchar();
return 0;
}
void swapNodes(struct lnode** head, struct lnode* n1, struct lnode* n2)
{
struct lnode* current = (*head);
struct lnode* temp;
while((current != NULL) && (current->next != NULL))
{
temp->some_word = n1->some_word;
n1->some_word = n2->some_word;
n2->some_word = temp->some_word;
}
printf("%s %s",n1,n2);
current = (current->next)->next;
}
struct lnode* newCharNode(struct lnode** head, char* myword) {
struct lnode* new_node = (struct lnode*) malloc(sizeof(struct lnode));
new_node ->some_word = myword;
new_node ->next = (*head);
(*head) = new_node;
}
누락 된 부분을 수정 한 후'newCharNode'에 대한 프로토 타입이 부족하여 컴파일 오류를 재현 할 수 없었습니다. – siride
나는 필요한 파일을 포함하고 있는데, 나는 이해하는 temp에 대한 오류를 얻지 만 그것을 고치는 방법은 모른다. 도움을 주시면 감사하겠습니다. –
swapNodes는 두 노드의 내용을 단순히 바꾸는 것을 의미하지만이 함수는 훨씬 더 복잡한 작업을 수행하고 있습니다. 또한 while 루프는 절대로 루프 본문에 들어 가지 않거나 "현재"포인터가 절대로 루프에서 수정되지 않으므로 영원히 반복합니다. 두 노드의 내용을 바꾸려면 두 노드에 포인터를 전달하고 링크 포인터를 제외한 구조체의 모든 내용을 바꿔서 반환해야합니다. – Fred