C++链表实现代码详解:从基本节点到链表操作
85 浏览量
更新于2024-08-29
收藏 104KB PDF 举报
C++ 数据结构链表的实现代码
在计算机科学中,链表是一种常用的数据结构,它是一种线性数据结构,其中每个元素都是一个独立的对象,称为节点(Node),每个节点都包含着一个数据域和一个指向下一个节点的指针域。在 C++ 中,实现链表需要定义节点的结构和链表的操作函数。
节点(Node)的基本结构
在 C++ 中,节点的基本结构可以用以下代码表示:
```cpp
class Node {
public:
int data;
Node *next;
Node(int da = 0, Node *p = NULL) {
this->data = da;
this->next = p;
}
};
```
在上面的代码中,我们定义了一个节点类 `Node`,它有两个成员变量:`data` 和 `next`。`data` 用于存储节点的数据,而 `next` 是一个指针,指向下一个节点。节点的构造函数 `Node` 接受两个参数:`da` 和 `p`,其中 `da` 是节点的初始数据,而 `p` 是指向下一个节点的指针。如果不指定第二个参数,构造函数将默认将 `next` 设置为 `NULL`。
链表(List)的基本结构
在 C++ 中,链表的基本结构可以用以下代码表示:
```cpp
class List {
private:
Node *head, *tail;
int position;
public:
List() { head = tail = NULL; };
~List() { delete head; delete tail; };
void print();
void insert(int da = 0);
void delete(int da = 0);
void search(int da = 0);
};
```
在上面的代码中,我们定义了一个链表类 `List`,它有两个私有成员变量:`head` 和 `tail`,分别指向链表的头节点和尾节点。链表的构造函数 `List` 将 `head` 和 `tail` 初始化为 `NULL`。链表的析构函数 `~List` 将释放链表中的所有节点。
链表的操作函数
链表的操作函数包括插入、删除和查找等。插入操作可以在链表的任意位置插入一个新节点,删除操作可以删除链表中的某个节点,查找操作可以查找链表中的某个节点。
单链表的实现
以下是单链表的实现代码:
```cpp
#include <iostream>
using namespace std;
class Node {
public:
int data;
Node *next;
Node(int da = 0, Node *p = NULL) {
this->data = da;
this->next = p;
}
};
class List {
private:
Node *head, *tail;
int position;
public:
List() { head = tail = NULL; };
~List() { delete head; delete tail; };
void print();
void insert(int da = 0);
void delete(int da = 0);
void search(int da = 0);
};
void List::print() {
Node *p = head;
while (p != NULL) {
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
void List::insert(int da) {
Node *p = new Node(da);
if (head == NULL) {
head = p;
tail = p;
} else {
tail->next = p;
tail = p;
}
}
void List::delete(int da) {
Node *p = head;
Node *q = NULL;
while (p != NULL) {
if (p->data == da) {
if (q == NULL) {
head = p->next;
} else {
q->next = p->next;
}
delete p;
return;
}
q = p;
p = p->next;
}
}
void List::search(int da) {
Node *p = head;
int pos = 0;
while (p != NULL) {
if (p->data == da) {
cout << "Found at position " << pos << endl;
return;
}
p = p->next;
pos++;
}
cout << "Not found" << endl;
}
```
在上面的代码中,我们实现了链表的插入、删除和查找操作。插入操作将新节点插入到链表的尾部,删除操作将删除链表中的某个节点,查找操作将查找链表中的某个节点。
2010-09-11 上传
2009-06-03 上传
2009-04-02 上传
2024-03-20 上传
2023-10-10 上传
2023-07-27 上传
2022-11-24 上传
2014-05-22 上传
点击了解资源详情
weixin_38687277
- 粉丝: 10
- 资源: 949