带头结点单链表的头插法和尾插法

带头结点的单链表是一种常见的数据结构,其中头结点本身不存储数据,只用于指向链表的第一个实际节点。头插法和尾插法是两种常见的插入节点的方法。

头插法(Head Insertion)

头插法是指每次插入新节点时,新节点都成为链表的第一个实际节点。具体步骤如下:

  1. 创建一个新节点。

  2. 将新节点的 next 指针指向当前链表的第一个实际节点。

  3. 将头结点的 next 指针指向新节点。

// 头插法创建链表
void CreateList_HeadInsert(LinkList &L, int n) {
    L = new Lnode;  // 创建头结点
    L->next = nullptr;  // 头结点的next指针初始化为nullptr

    for (int i = 0; i < n; i++) {
        LinkList p = new Lnode;  // 创建新节点
        cout << "请输入数据域: ";
        cin >> p->data;  // 输入新节点的数据域
        p->next = L->next;  // 新节点的next指向当前头结点的next
        L->next = p;  // 头结点的next指向新节点
    }
}

尾插法(Tail Insertion)

尾插法是指每次插入新节点时,新节点都成为链表的最后一个实际节点。具体步骤如下:

  1. 创建一个新节点。

  2. 将当前链表的最后一个节点的 next 指针指向新节点。

  3. 更新尾指针,使其指向新节点。

// 尾插法创建链表
void CreateList_TailInsert(LinkList &L, int n) {
    L = new Lnode;  // 创建头结点
    L->next = nullptr;  // 头结点的next指针初始化为nullptr
    LinkList r = L;  // 尾指针r指向头结点

    for (int i = 0; i < n; i++) {
        LinkList p = new Lnode;  // 创建新节点
        cout << "请输入数据域: ";
        cin >> p->data;  // 输入新节点的数据域
        p->next = nullptr;  // 新节点的next指针初始化为nullptr
        r->next = p;  // 尾指针的next指向新节点
        r = p;  // 尾指针r指向新节点
    }
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值