21xrx.com
2024-11-08 22:20:03 Friday
登录
文章检索 我的文章 写文章
C++单链表实现代码
2023-06-28 11:35:27 深夜i     --     --
C++ 单链表 实现代码

单链表是一种常见的数据结构,它由若干个节点组成,每个节点包括一个数据元素和一个指向下一个节点的指针。C++是一种面向对象的编程语言,它提供了丰富的数据结构和算法库,可以轻松实现单链表。

以下是一个简单的单链表代码实现:


#include <iostream>

using namespace std;

template<typename T>

struct Node

{

  T data;

  Node<T>* next;

};

template<typename T>

class LinkedList

{

public:

  LinkedList();

  ~LinkedList();

  void append(T data);

  void remove(int index);

  void print();

private:

  Node<T>* head;

  int count;

};

template<typename T>

LinkedList<T>::LinkedList() : head(nullptr), count(0)

template<typename T>

LinkedList<T>::~LinkedList()

{

  Node<T>* current = head;

  while (current)

  {

    Node<T>* next = current->next;

    delete current;

    current = next;

  }

}

template<typename T>

void LinkedList<T>::append(T data)

{

  if (!head)

  {

    head = new Node<T> nullptr;

  }

  else

  {

    Node<T>* current = head;

    while (current->next)

    

      current = current->next;

    

    current->next = new Node<T> nullptr;

  }

  count++;

}

template<typename T>

void LinkedList<T>::remove(int index)

{

  if (index < 0 || index >= count)

  

    return;

  

  Node<T>* current = head;

  Node<T>* previous = nullptr;

  for (int i = 0; i < index; i++)

  

    previous = current;

    current = current->next;

  

  if (previous)

  

    previous->next = current->next;

  

  else

  

    head = current->next;

  

  delete current;

  count--;

}

template<typename T>

void LinkedList<T>::print()

{

  Node<T>* current = head;

  while (current)

  

    cout << current->data << " ";

    current = current->next;

  

  cout << endl;

}

int main()

{

  LinkedList<int> list;

  list.append(1);

  list.append(2);

  list.append(3);

  list.print(); // output: 1 2 3

  list.remove(1);

  list.print(); // output: 1 3

  return 0;

}

以上代码使用了模板类和结构体,可以存储不同类型的数据。在主函数中,我们创建了一个整型链表,并多次调用了其成员方法,包括添加元素、删除元素和打印链表。

可以看到,使用C++实现单链表非常简单,只需定义一个节点结构体和一个链表类,并实现其相关方法即可。这种数据结构对于数据处理和算法实现非常重要,值得我们去深入学习和思考。

  
  

评论区

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