使用哪个参数我可以调用add()函数并正常工作?

问题描述 投票:0回答:1

我正在学习工程学,正在学习数据结构和算法课程,这是我的作业,但我找不到解决方案。我应该调用 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++ data-structures linked-list
1个回答
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;
}
© www.soinside.com 2019 - 2024. All rights reserved.