21xrx.com
2024-11-08 23:29:52 Friday
登录
文章检索 我的文章 写文章
如何用C++创建链表?
2023-07-09 09:51:14 深夜i     --     --
C++ 链表 创建 节点 指针

在C++中,链表是一个常见的数据结构,它可以动态地存储数据,灵活性较高,因此在很多场景下都被广泛应用。创建链表主要包括两个方面的操作:创建链表节点和链接节点。下面将分别介绍这两个操作的实现方法。

1. 创建链表节点

链表节点一般包含两个部分:一个数据成分和一个指向下一个节点的指针成分。因此,我们可以用一个结构体来表示链表节点:


struct ListNode {

  int val;

  ListNode *next;

  ListNode(int x) : val(x), next(NULL) {}

};

其中,val代表节点中储存的数据,next指向下一个节点。注意,这里将next指针初始化为NULL,表示该节点没有下一个节点。

2. 链接节点

链表的链接操作与数组的插入、删除等操作不同,因为它需要修改指针。链表的链接操作分为两种情况:在链表头部插入节点和在链表尾部插入节点。

2.1 在链表头部插入节点

在链表头部插入节点,需要将新节点的next指向之前的头节点,并将头节点修改为新节点。具体实现如下:


ListNode* insertAtHead(ListNode *head, int val) {

  ListNode *newNode = new ListNode(val);

  newNode->next = head;

  head = newNode;

  return head;

}

其中,newNode表示新建的节点,将其插入到原有链表的头部,返回新的头节点。

2.2 在链表尾部插入节点

在链表尾部插入节点,需要遍历链表,找到尾节点,然后将新节点链接在其后面。具体实现如下:


ListNode* insertAtTail(ListNode *head, int val) {

  ListNode *newNode = new ListNode(val);

  if (head == NULL)

    head = newNode;

   else {

    ListNode *temp = head;

    while (temp->next != NULL)

      temp = temp->next;

    

    temp->next = newNode;

  }

  return head;

}

上面的代码中,如果链表为空,直接将新节点作为头节点返回;否则,在遍历链表找到尾节点后,将新节点链接在尾节点之后。

总结

在C++中,创建链表主要包括两个部分:创建链表节点和链接节点。通过结构体来表示链表节点,并按照需求插入新节点即可。当然,链表还有许多其他操作,例如删除指定节点、查找节点等,可以结合链表的原理学习后进一步实现。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复