对带头节点的循环单链表,遍历该循环链表,并输出结点总数
时间: 2023-05-21 20:02:35 浏览: 141
可以使用以下代码遍历带头节点的循环单链表,并输出结点总数:
```
int count = 0;
Node* p = head->next;
while (p != head) {
// 输出结点信息
cout << p->data << " ";
count++;
p = p->next;
}
cout << endl << "结点总数为:" << count << endl;
```
其中,head 是带头节点的循环单链表的头指针,Node 是结点类型。在遍历过程中,从头节点的下一个节点开始遍历,直到再次回到头节点为止。每遍历一个结点,就将计数器 count 加 1。最后输出结点总数即可。
相关问题
创建单链表,并遍历单链表,输出所有奇数序号结点数据
好的,以下是创建单链表并遍历输出所有奇数序号结点数据的代码实现:
```c++
#include <iostream>
using namespace std;
// 定义单链表结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 创建单链表
ListNode* createLinkedList() {
int n; // 链表节点个数
cout << "请输入链表节点个数: ";
cin >> n;
ListNode* head = new ListNode(-1); // 创建头节点
ListNode* curr = head;
for (int i = 0; i < n; i++) {
int data;
cout << "请输入第" << i+1 << "个节点的值: ";
cin >> data;
ListNode* node = new ListNode(data); // 创建新节点
curr->next = node; // 将新节点插入链表尾部
curr = node;
}
return head; // 返回头节点
}
// 遍历单链表,输出所有奇数序号结点数据
void printOddNodes(ListNode* head) {
ListNode* curr = head->next;
int count = 1;
while (curr != nullptr) {
if (count % 2 == 1) {
cout << curr->val << " ";
}
curr = curr->next;
count++;
}
}
int main() {
// 创建单链表
ListNode* head = createLinkedList();
// 遍历单链表,输出所有奇数序号结点数据
cout << "所有奇数序号结点数据为: ";
printOddNodes(head);
cout << endl;
return 0;
}
```
该程序首先通过 `createLinkedList` 函数创建单链表,并返回头节点。然后调用 `printOddNodes` 函数遍历单链表,输出所有奇数序号结点的数据。注意,这里的头节点是没有数据的,实际上单链表的第一个节点是头节点的下一个节点。
pta java 头插法创建单链表、遍历链表、删除链表
当我们创建一个单链表时,需要一个头结点,这个头结点是不存储任何元素的,只是为了方便链表的操作。下面是使用头插法创建单链表、遍历链表和删除链表的Java代码:
```java
//定义一个链表节点类
class Node {
int data; //数据域
Node next; //指针域
public Node(int data) {
this.data = data;
}
}
//定义一个单链表类
class LinkedList {
Node head; //头结点
//头插法创建链表
public void addNode(int data) {
Node newNode = new Node(data);
if (head == null) {
head = newNode;
return;
}
newNode.next = head;
head = newNode;
}
//遍历链表
public void printList() {
Node temp = head;
while (temp != null) {
System.out.print(temp.data + " ");
temp = temp.next;
}
}
//删除链表
public void deleteList() {
head = null;
}
}
```
关于头插法的实现原理:我们首先在创建链表时定义一个头结点,这个头结点是不存储任何元素的,只是为了方便链表的操作。每次在添加一个新节点时,我们将这个新节点插入到头结点的后面,然后更新头结点的位置,这样就能够保证新加入的节点始终位于链表的第一个位置。
相关推荐
![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_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)
![](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)