이것은 노드를 추가 한 다음 인쇄하는 기본 연결 목록이지만 어떤 이유로 올바르게 작동하지 않습니다. 필자가 테스트 한 바에 따르면 목록을 인쇄 한 후에 실패하면 잘못 인쇄 된 임금을 인쇄 한 다음 종료됩니다. 코드의 일부를 다음에서연결된 목록이 제대로 작동하지 않습니다.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct node_s {
char job_title[25];
double hourly_wage;
struct node_s *next;
} node_t;
void print_list(node_t *list);
void add_node(node_t **head, char *title, double hwage);
int main()
{
node_t *list;
list = NULL;
add_node(&list, "Programmer", 32.35);
print_list(list);
add_node(&list, "Analyst", 25.80);
print_list(list);
add_node(&list, "Technician", 17.50);
print_list(list);
add_node(&list, "Clerk", 12.00);
print_list(list);
add_node(&list, "Manager", 53.58);
print_list(list);
return(0);
}
void print_list(node_t *list){
node_t *current;
if (current == NULL) {
printf("\n");
}else{
printf("The job is called:%s\n", current->job_title);
printf("The job pays %d hourly.\n", current->hourly_wage);
print_list(current->next);
}
}
void add_node(node_t **head, char *title, double hwage){
node_t *current = head;
node_t *newNode = (node_t *) malloc(sizeof(node_t));
if (newNode == NULL) {
printf("malloc failed\n");
exit(-1);
}
strcpy(newNode->job_title, title);
newNode->hourly_wage = hwage;
newNode->next = NULL;
while (current->next) {
current = current->next;
}
current->next = newNode;
}
'node_t * current = head;'head는'node_t ** '유형입니다. –
인쇄 방법이 "현재"초기화에 실패했습니다. 그것은 쓰레기를 보유하고 있으므로 그 행동은 정의되어 있지 않습니다. –
@Ieaturaw 내가 보여준 코드를 사용할 것이므로 최선을 다하여 내 답변을 표시하는 것을 잊지 마십시오. :) –