我正在学习工程学,正在学习数据结构和算法课程,这是我的作业,但我找不到解决方案。我应该调用 add() 函数的哪个参数? (抱歉我的语言不好)
我正在尝试正确运行我的代码。
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include <iostream>
typedef struct {
char name[20];
char surname[20];
} Name;
typedef struct Node {
Name per_name;
struct Node* next;
} Node;
Node* start = NULL;
Node* newNode(char* name, char* surname) {
Node* new_node = (Node*)malloc(sizeof(Node));
strcpy(new_node->per_name.name, name);
strcpy(new_node->per_name.surname, surname);
new_node->next = NULL;
return new_node;
}
void add(char* name, char* surname) {
Node* temp = newNode(name, surname);
if (start == NULL) {
start = temp;
return;
}
Node* iter = start;
while (iter->next != NULL) {
iter = iter->next;
}
iter->next = temp;
}
void display() {
Node* iter = start;
while (iter != NULL)
{
printf("%s %s\n", iter->per_name.name, iter->per_name.surname);
iter = iter->next;
}
}
int main()
{
printf("Names on LinkedList\n");
printf("------------------------------------\n");
add("John", "Doe");
display();
return 0;
}
这确实是 C 代码。我添加了一个列表参数和一个 freelist 函数。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char name[20];
char surname[20];
} Name;
typedef struct Node_ { /* classic C style */
struct Node_* next;
Name per_name;
} Node;
Node* newNode(char* name, char* surname) {
Node* new_node = (Node*)malloc(sizeof(Node));
strcpy(new_node->per_name.name, name);
strcpy(new_node->per_name.surname, surname);
new_node->next = NULL;
return new_node;
}
Node* add(Node* list, char* name, char* surname) {
Node* temp = newNode(name, surname);
if (list == NULL) {
list = temp;
return list;
}
Node* iter = list;
while (iter->next != NULL) {
iter = iter->next;
}
iter->next = temp;
return list;
}
void display(Node *list) {
Node* iter = list;
while (iter != NULL)
{
printf("%20s %20s\n", iter->per_name.name, iter->per_name.surname);
iter = iter->next;
}
}
Node* freelist(Node *list) {
Node* iter = list;
Node* next;
while (iter != NULL)
{
next = iter->next;
free(iter);
iter = next;
}
return iter;
}
int main()
{
Node* list = NULL;
list = add(list, "Roman", "Briggs");
list = add(list, "Jane", "Doe");
list = add(list, "William", "Patterson");
list = add(list, "Kurt", "Weller");
list = add(list, "Tasha", "Zepata");
printf("Names on LinkedList\n");
printf("-----------------------------------------\n");
display(list);
list = freelist(list);
return 0;
}