循环链表尾指针的特点
时间: 2024-01-08 16:03:37 浏览: 51
循环链表尾指针的特点如下:
1. 带尾指针的循环链表可以从任意结点出发,访问到链表的全部结点。
2. 当循环链表为空链表时,头结点的指针域指向自己,尾指针指向头结点。此时,尾指针存放了头结点的地址,头结点的指针域也存放了头结点的地址,所以会有rear->next->next==rear,不管rear后面接几个next,都会指向头结点。
3. 当循环链表为非空链表时,终端结点的指针域指向头结点,尾指针指向终端结点。
4. 如果不是最后一个结点时,其结点地址就不等于尾指针,即cur != rear。
相关问题
有尾指针的单循环链表
有尾指针的单循环链表是一种特殊的单循环链表,它与普通的单循环链表的区别在于,它的尾节点指针指向了链表的头节点,这样就可以方便地进行链表的插入、删除等操作。
相比于普通单循环链表,有尾指针的单循环链表的插入和删除操作更加方便。例如,在普通单循环链表中,如果要在表尾插入一个节点,则需要遍历整个链表找到尾节点,然后再进行插入操作。而在有尾指针的单循环链表中,只需要直接通过尾节点的指针进行插入即可。
下面是一个示例代码,展示如何实现有尾指针的单循环链表:
```c++
#include <iostream>
using namespace std;
// 定义链表节点结构体
struct Node {
int data;
Node *next;
};
// 定义有尾指针的单循环链表结构体
struct CircleList {
Node *head; // 链表头节点
Node *tail; // 链表尾节点
int size; // 链表大小
// 初始化链表
CircleList() {
head = tail = nullptr;
size = 0;
}
// 在链表尾部插入节点
void insert(int value) {
Node *node = new Node();
node->data = value;
node->next = nullptr;
if (head == nullptr) {
head = tail = node;
} else {
tail->next = node;
tail = node;
}
// 将尾节点指向头节点,形成循环
tail->next = head;
size++;
}
// 删除指定值的节点
void remove(int value) {
Node *prev = nullptr;
Node *curr = head;
while (curr != tail) {
if (curr->data == value) {
break;
}
prev = curr;
curr = curr->next;
}
if (curr->data == value) {
if (prev == nullptr) {
head = curr->next;
tail->next = head;
} else {
prev->next = curr->next;
}
delete curr;
size--;
}
}
// 打印链表
void print() {
Node *curr = head;
while (curr != tail) {
cout << curr->data << " ";
curr = curr->next;
}
cout << curr->data << endl; // 输出尾节点的值
}
};
int main() {
CircleList list;
list.insert(1);
list.insert(2);
list.insert(3);
list.print(); // 输出:1 2 3
list.remove(2);
list.print(); // 输出:1 3
return 0;
}
```
带头指针表示的单循环链表和带尾指针的单循环链表有什么区别
带头指针表示的单循环链表和带尾指针的单循环链表的区别在于链表的尾部指针的位置和操作的方便性。
带头指针的单循环链表是通过在链表的头部添加一个头结点来表示的,头结点不存储数据,只用于指向链表的第一个结点。而尾部指针指向链表的最后一个结点,即尾结点。这样可以方便地进行插入和删除操作,因为头结点和尾结点都可以直接访问。
带尾指针的单循环链表是通过在链表的尾部添加一个尾指针来表示的,尾指针指向链表的最后一个结点。这样可以方便地进行插入操作,因为可以直接访问尾指针,无需遍历整个链表找到尾结点。但是删除操作相对复杂,需要遍历链表找到要删除的结点的前一个结点。
总结起来,带头指针的单循环链表适用于频繁进行插入和删除操作的场景,而带尾指针的单循环链表适用于频繁进行插入操作的场景。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)