当前位置:首页 > 行业动态 > 正文

c语言里怎么构造单链表

在C语言中,构造单链表需要以下步骤:

1、定义链表节点结构体

2、初始化链表节点

3、创建头节点

4、插入节点

5、删除节点

6、遍历链表

下面是详细的解释和代码示例:

1、定义链表节点结构体:

typedef struct Node {
    int data; // 节点数据
    struct Node* next; // 指向下一个节点的指针
} Node;

2、初始化链表节点:

Node* createNode(int data) {
    Node* newNode = (Node*)malloc(sizeof(Node)); // 动态分配内存空间
    newNode>data = data; // 设置节点数据
    newNode>next = NULL; // 设置下一个节点为空
    return newNode; // 返回新节点的指针
}

3、创建头节点:

Node* createHead() {
    Node* head = createNode(0); // 创建一个头节点,数据为0
    return head; // 返回头节点的指针
}

4、插入节点:

void insertNode(Node** head, int data) {
    Node* newNode = createNode(data); // 创建新节点
    if (*head == NULL) { // 如果链表为空,将头节点指向新节点
        *head = newNode;
        return;
    }
    Node* temp = *head; // 临时保存头节点的指针
    while (temp>next != NULL) { // 遍历链表,找到最后一个节点
        temp = temp>next;
    }
    temp>next = newNode; // 将最后一个节点的指针指向新节点,完成插入操作
}

5、删除节点:

void deleteNode(Node** head, int data) {
    Node* temp = *head; // 临时保存头节点的指针
    Node* previous = NULL; // 临时保存前一个节点的指针,用于删除操作时更新指针指向
    while (temp != NULL && temp>data != data) { // 遍历链表,找到要删除的节点或到达末尾
        previous = temp; // 更新前一个节点的指针指向当前节点
        temp = temp>next; // 移动到下一个节点
    }
    if (temp == NULL) { // 如果未找到要删除的节点,直接返回不做任何操作
        return;
    } else if (previous == NULL) { // 如果头节点就是要删除的节点,更新头节点指向下一个节点(即删除头节点)
        *head = temp>next;
    } else { // 如果删除的是中间节点,更新前一个节点的指针指向要删除节点的下一个节点(即跳过要删除的节点)
        previous>next = temp>next;
    }
    free(temp); // 释放要删除节点的内存空间(使用free函数)
}

6、遍历链表:

void traverseList(Node* head) {
    Node* temp = head; // 临时保存头节点的指针,用于遍历链表时移动指针位置
    while (temp != NULL) { // 遍历链表,直到达到末尾(即下一个节点为空)
        printf("%d ", temp>data); // 输出当前节点的数据
        temp = temp>next; // 移动到下一个节点,继续遍历链表(如果存在)或退出循环(如果到达末尾)
    }
    printf("
"); // 换行符,使输出结果更易读
}
0