单链表头指针h,写代码实现输出链表中所有结点数据
时间: 2024-10-08 08:06:30 浏览: 23
在C++中,如果你有一个单链表,你可以通过遍历链表并打印每个节点的数据来实现这个功能。假设链表的节点结构是这样的:
```cpp
struct ListNode {
int data;
ListNode* next;
};
```
以下是使用头指针`h`输出链表所有节点数据的代码示例:
```cpp
void printLinkedList(ListNode* h) {
if (h == nullptr) {
std::cout << "链表为空" << std::endl;
return;
}
ListNode* current = h;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << std::endl; // 打印换行符结束
}
```
这段代码首先检查头指针是否为空,然后创建一个名为`current`的临时指针,从头指针开始遍历链表。每次迭代,它都会打印当前节点的数据,并将`current`移动到下一个节点,直到遍历完链表。
相关问题
单链表头指针h,写代码实现输出链表中所有结点数据。
在C语言中,你可以通过遍历单链表来输出其中的所有节点数据。这里是一个简单的示例,假设我们有一个`struct Node`定义了链表节点的数据结构,并且`head`是链表的头指针:
```c
#include <stdio.h>
// 假设Node结构如下
typedef struct Node {
int data; // 节点数据
struct Node* next; // 指向下一个节点的指针
} Node;
void printList(Node* head) {
if (head == NULL) { // 链表为空
printf("链表为空。\n");
} else {
Node* current = head;
while (current != NULL) { // 遍历直到链表末尾
printf("%d ", current->data); // 输出当前节点的数据
current = current->next; // 移动到下一个节点
}
printf("\n"); // 结束行
}
}
int main() {
// 初始化链表... (这里省略,因为你没有提供具体的链表创建过程)
printList(head); // 调用函数打印链表
return 0;
}
```
当你运行这个程序,它会依次打印出链表中每个节点的数据。
定义单链表的结点类型 struct node { int val; node *next; }。 定义函数 node *insert(node *h,node *p) 用于将p指向的结点升序插入在升序链表h中,返回新链表头指针。 定义函数 node *create( ) 用于创建链表,函数内不断输入整数(^Z结束)构成链表结点(动态结点),返回链表头指针。 定义函数 void print(node *h) 用于输出链表h的值,每个值后面跟两个空格,最后换行。 定义函数 node *delNode(node *h,int x) 用于在链表h中删除第一个值为x的结点(若存在),返回链表头指针 定义函数 void delAll(node *h) 用于删除整个链表,释放链表结点占用的动态空间。 主函数调用 create 创建一个升序单链表head,调用 print 输出该链表,然后调用 delNode 删除链表head中第一个值为100的结点,再调用 insert 在链表中升序插入结点,该结点的值为200,最后调用 print 在下一行输出整个链表。输出的两行数据中,每个数据后面跟两个空格。
```c++
#include <iostream>
using namespace std;
struct node {
int val;
node *next;
};
node *create() {
node *head = NULL, *tail = NULL;
int x;
while (cin >> x) {
node *p = new node;
p->val = x;
p->next = NULL;
if (!head) head = tail = p;
else {
tail->next = p;
tail = p;
}
}
return head;
}
void print(node *h) {
while (h) {
cout << h->val << " ";
h = h->next;
}
cout << endl;
}
node *delNode(node *h, int x) {
if (!h) return NULL;
if (h->val == x) {
node *p = h->next;
delete h;
return p;
}
node *pre = h, *cur = h->next;
while (cur) {
if (cur->val == x) {
pre->next = cur->next;
delete cur;
break;
}
pre = cur;
cur = cur->next;
}
return h;
}
node *insert(node *h, node *p) {
if (!h) return p;
if (p->val < h->val) {
p->next = h;
return p;
}
node *pre = h, *cur = h->next;
while (cur) {
if (p->val < cur->val) {
p->next = cur;
pre->next = p;
break;
}
pre = cur;
cur = cur->next;
}
if (!cur) pre->next = p;
return h;
}
void delAll(node *h) {
while (h) {
node *p = h;
h = h->next;
delete p;
}
}
int main() {
node *head = create();
print(head);
head = delNode(head, 100);
node *p = new node;
p->val = 200;
p->next = NULL;
head = insert(head, p);
print(head);
delAll(head);
return 0;
}
```
阅读全文