如何输出带头节点单链表
时间: 2023-04-10 15:01:19 浏览: 108
要输出带头节点单链表,可以从头节点的下一个节点开始遍历链表,逐个输出节点的值,直到遍历到链表的末尾。具体实现可以使用循环或递归的方式,代码如下:
```python
# 定义单链表节点类
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
# 输出带头节点单链表
def printList(head):
cur = head.next
while cur:
print(cur.val, end=' ')
cur = cur.next
print()
```
其中,head 表示头节点,head.next 表示链表的第一个节点。printList 函数遍历链表,逐个输出节点的值,直到遍历到链表的末尾。
相关问题
c语言如何输出带头节点单链表
你可以使用以下代码来输出带头节点单链表:
```
void printList(Node* head) {
Node* curr = head->next;
while (curr != NULL) {
printf("%d ", curr->data);
curr = curr->next;
}
printf("\n");
}
```
其中,Node 是链表节点的结构体,包含一个数据域和一个指向下一个节点的指针域。head 是指向链表头节点的指针,head->next 指向链表的第一个节点。在循环中,我们遍历链表并输出每个节点的数据。最后,我们在末尾输出一个换行符,以便下一次输出不会与本次输出混在一起。
编写算法,实现带头节点单链表的就地逆置,即利用原带头节点单链表的结点空间把元素序列逆置
算法步骤如下:
1. 定义三个指针:p、q、r,分别指向链表的头结点、第一个结点和第二个结点;
2. 将 q 指向的结点的 next 指针指向 p,即将第一个结点反向连接到头结点之后;
3. 将 p、q、r 依次向后移动一个位置,即将 q 移动到第二个结点,将 r 移动到第三个结点;
4. 循环执行步骤2-3,直到 r 指向空节点,即完成链表的就地逆置。
算法实现如下:
```c++
void reverseList(Node* head) {
if (head == nullptr || head->next == nullptr) {
return;
}
Node* p = head->next;
Node* q = p->next;
Node* r = nullptr;
while (q != nullptr) {
r = q->next;
q->next = p;
p = q;
q = r;
}
head->next->next = nullptr;
head->next = p;
}
```
其中,head 为头结点,Node 为链表结点类型。需要注意的是,在完成链表逆置后,需要将原来的尾结点的 next 指针置为空,否则会出现环形链表的问题。