如何在链表中添加和打印项目



My main is:

void main()
{
    int flag = 1;
    LinkedList *list = NULL;
    list = makeList();
    while (flag) {
        add_last(list, makeNode(nextKey(), "uninitialized"));
        printf("please enter 0 to stop any other number to go on n");
        scanf("%d",&flag);
    }
    printKeys(list);
}

我有两个结构体定义节点和列表:

typedef struct item{
    int data;
    char *charData;
    struct item *next;
}item;
typedef struct{
    struct item *head;
}LinkedList;

我通过函数创建列表:

LinkedList *makeList(){
    LinkedList *head = (LinkedList*)malloc(sizeof(LinkedList));
    return head;
}

和节点按功能:

item *makeNode(int key, char* data){
    item *newItem = (item*)malloc(sizeof(item));
    if (newItem != NULL) {
        newItem->data = key;
        newItem->next = NULL;
    }
    return newItem;
}

现在我需要写两个函数,一个用于在列表末尾添加新项,第二个用于打印列表。

第一个函数的签名是:

void add_last(LinkedList *list, item *newItem){
}

,第二个是:

void printKeys(LinkedList *list){
}

我是C语言世界的新手,我不知道我该怎么做。我不知道如何访问列表。

谢谢…

printKeys函数应该遍历节点,直到找到一个节点,其中nextnull。通过这样做,应该打印key字段。add_last函数可能应该迭代直到找到最后一个节点,然后将最后一个节点的next字段设置为newItem

void add_last(LinkedList *list, item *newItem){
    item* ptrTemp = list->head;
    if (list!=NULL) {
        if (list->head == NULL) {
            list->head = newItem;
            return;
        }
        while (ptrTemp->next != NULL) {
            ptrTemp = ptrTemp->next;
        }
        ptrTemp->next = newItem;
    }
}
void printKeys(LinkedList *list){
    item* ptrTemp = list->head;
    while (ptrTemp->next != NULL) {
        printf("%d",ptrTemp->data);
        ptrTemp = ptrTemp->next;
    }
    printf("%dn",ptrTemp->data);
}

相关内容

  • 没有找到相关文章

最新更新