21xrx.com
2025-03-30 22:01:03 Sunday
文章检索 我的文章 写文章
【C++教程】使用头插法构建单链表,实现链表内容由用户输入
2023-06-27 15:02:51 深夜i     7     0
C++ 头插法 单链表 用户输入

C++教程:使用头插法构建单链表,实现链表内容由用户输入

单链表作为一种基础的数据结构,经常在编程中使用,掌握单链表的构建方法对学习数据结构和算法非常有帮助。本教程将介绍如何使用头插法构建单链表,并且实现链表内容由用户输入的功能。

首先,我们需要定义一个单链表结构体,包括节点数据和指向下一节点的指针。

struct ListNode {
  int val;
  ListNode* next;
  ListNode(int x) : val(x), next(nullptr) {}
};

在这个结构体中,val代表节点的数据,next代表指向下一节点的指针,初始值为nullptr。

接下来,我们要定义一个函数,用于构建单链表。

ListNode* buildList() {
  ListNode* head = nullptr;
  ListNode* cur = head;
  int val;
  cout << "请输入链表中的数据,以-1为结束:" << endl;
  cin >> val;
  while (val != -1) {
    ListNode* node = new ListNode(val);
    if (head == nullptr)
      head = node;
      cur = head;
    
    else
      cur->next = node;
      cur = cur->next;
    
    cin >> val;
  }
  return head;
}

在这个函数中,我们首先定义了一个指向头节点的指针head和一个指向节点的指针cur,初始值均为nullptr。然后,我们使用cout和cin函数提示用户输入数据,这里以-1为结束标志。在while循环中,我们定义一个节点指针node,并为其赋值为用户输入的数据。然后判断头节点是否为空,若为空,则将head指向node,同时让cur也指向head。否则,将cur节点的next指向node,这样就会形成一个链表。最后,再次使用cin函数让用户输入数据,直到输入-1,表示链表已经构建好,返回头节点head。

至此,我们已经完成了单链表的构建过程。下面是完整的代码,可以直接运行。

#include <iostream>
using namespace std;
struct ListNode {
  int val;
  ListNode* next;
  ListNode(int x) : val(x), next(nullptr) {}
};
ListNode* buildList() {
  ListNode* head = nullptr;
  ListNode* cur = head;
  int val;
  cout << "请输入链表中的数据,以-1为结束:" << endl;
  cin >> val;
  while (val != -1) {
    ListNode* node = new ListNode(val);
    if (head == nullptr)
      head = node;
      cur = head;
    
    else
      cur->next = node;
      cur = cur->next;
    
    cin >> val;
  }
  return head;
}
int main() {
  ListNode* head = buildList();
  return 0;
}

在实际使用中,可以根据需要对单链表进行增删改查等操作。相信通过学习本教程,大家已经掌握了使用头插法构建单链表,并且实现链表内容由用户输入的方法。

  
  

评论区

请求出错了