如何创建头节点



我想我在newList里写错了。不能更改类型定义结构的实现。这是我们学校的一个实验作业。提前感谢:)

#include<stdio.h>
    typedef struct node *nodeptr;
    struct node {
    int item;
    nodeptr next;
};
typedef nodeptr List;

List newList(); 

newList创建一个header并返回一个指向header节点的指针

void display(List list);
void addFront(List list, int item);
List newList(){
    List list;
    list=(nodeptr)malloc(sizeof(List));
    list->next=NULL;
    return list;
} //I think my new list is incorrect..
void display(List list){
    nodeptr ptr=list;
    while(ptr!=NULL){
        printf("%d",ptr->item);
        ptr=ptr->next;
    }
    printf("n");
}
void addEnd(List list, int item){
    nodeptr temp, ptr;
    temp=(List)malloc(sizeof(nodeptr));
    temp->item=item;
    temp->next=NULL;
    if(list->next==NULL)
        list=temp;
    else{
        ptr=list;
        while(ptr->next!=NULL)
            ptr=ptr->next;
        ptr->next=temp;
    }
}

我似乎不能从列表中添加10 .

int main(void){
    List list=newList();
    addEnd(list,10);
    display(list);
}

根据您的实际需要,有许多方法可以做到这一点(因为仅仅创建节点本身并没有多大意义)。但通常有三种常见的选择——在堆栈上创建,在全局内存中创建,或者动态分配。下面是一些例子。

栈上

#include <stdlib.h>
struct node {
    int item;
    struct node *next;
};
int main()
{
    struct node head;
    head.item = 0;
    head.next = NULL;
    /* Do something with the list now. */
    return EXIT_SUCCESS;
}

In Global Memory

#include <stdlib.h>
struct node {
    int item;
    struct node *next;
};
static struct node head;
int main()
{
    /* Do something with the list now. */
    return EXIT_SUCCESS;
}

动态分配

#include <stdlib.h>
#include <stdio.h>
struct node {
    int item;
    struct node *next;
};
int main()
{
    struct node *head;
    head = calloc(1, sizeof(struct node));
    if (head == NULL) {
        perror("calloc");
        return EXIT_FAILURE;
    }
    /* Do something with the list now. */
    return EXIT_SUCCESS;
}

你可以在任何C入门书籍中阅读上述任何一个例子。

希望有帮助。好运!

相关内容

  • 没有找到相关文章

最新更新