创建单链表不带头结点尾插法怎么做呢?

#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;           // 数据域
    struct Node *next;  // 指针域
} Node;

int main() {
    Node *head = NULL;  // 头指针(不带头结点)
    Node *tail = NULL;  // 尾指针(用于优化尾插)
    int num;

    printf("输入整数序列(-1结束):\n");
    while (1) {
        scanf("%d", &num);
        if (num == -1) break;  // 输入-1结束

        // 创建新节点
        Node *newNode = (Node*)malloc(sizeof(Node));
        newNode->data = num;
        newNode->next = NULL;

        if (head == NULL) {  // 链表为空
            head = newNode;  // 头指针指向新节点
            tail = newNode;  // 尾指针指向新节点
        } else {             // 链表非空
            tail->next = newNode; // 尾节点的next指向新节点
            tail = newNode;       // 更新尾指针为新节点
        }
    }

    // 打印链表(验证结果)
    printf("链表元素: ");
    Node *p = head;
    while (p != NULL) {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("\n");

    // 释放链表内存(实际使用时需添加)
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值