用C++语言写一个程序:利用无参构造函数建立单链表(myLinkList1) ,并打印出该单链表讯息。 此时,单链表中应无数据,打印出无数据的讯息
时间: 2023-02-28 07:56:57 浏览: 45
以下是在 C 语言中利用无参构造函数建立单链表(myLinkList1) 并打印出该单链表讯息的程序代码:
```
#include <stdio.h>
#include <stdlib.h>
//定义结构体
struct node {
int data;
struct node *next;
};
//无参构造函数,用来创建一个空的单链表
struct node *createLinkList1() {
return NULL;
}
//打印链表中的数据
void printLinkList(struct node *head) {
if (head == NULL) {
printf("该链表中无数据\n");
return;
}
struct node *p = head;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
struct node *myLinkList1 = createLinkList1();
printLinkList(myLinkList1);
return 0;
}
```
输出:
```
该链表中无数据
```
相关问题
通过课程进入 题 号: 283 建立单链表 语言要求: c++ main函数写成下面形式: struc
建立单链表是实现链表数据结构的过程。在C语言中,可以通过以下步骤来建立单链表:
1. 首先,定义链表的节点结构体。节点结构体通常包含两个部分:数据部分(用于存储具体的数据)和指针部分(用于指向下一个节点)。
例如,可以定义一个名为Node的结构体,包含一个整型数据成员和一个指向Node类型的指针成员。
typedef struct Node {
int data;
struct Node* next;
} Node;
2. 接下来,在main函数中创建链表的头节点。头节点是链表的起始节点,它不存储任何实际的数据,只用于连接第一个真正的数据节点。
例如,可以定义一个名为head的Node指针,并将其指向空(NULL)。
Node* head = NULL;
3. 然后,可以利用循环结构,依次读取用户输入的数据,并创建新的节点插入到链表中。
例如,可以使用while循环来不断读取数据,当输入数据为-1时表示结束输入。
int data;
while (1) {
printf("请输入数据(输入-1表示结束输入):");
scanf("%d", &data);
if (data == -1) {
break; // 结束输入
}
// 创建新节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
// 插入到链表中
if (head == NULL) {
// 如果链表为空,则将新节点作为头节点
head = newNode;
} else {
// 否则,遍历到链表末尾并插入新节点
Node* currentNode = head;
while (currentNode->next != NULL) {
currentNode = currentNode->next;
}
currentNode->next = newNode;
}
}
4. 最后,可以遍历链表,输出所有节点的数据。
例如,可以使用while循环遍历链表,并依次输出每个节点的数据。
Node* currentNode = head;
printf("链表的数据为:");
while (currentNode != NULL) {
printf("%d ", currentNode->data);
currentNode = currentNode->next;
}
printf("\n");
以上就是使用C语言实现建立单链表的步骤。通过这些步骤,可以按照用户输入的顺序创建一个包含多个节点的链表,并输出链表中的所有数据。
写一个利用尾插法建立单链表,利用头插法完成单链表的逆置并输出逆置后的单链表 的代码
好的,这是一个简单的 C++ 实现:
```cpp
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* buildList() {
int n;
cin >> n;
ListNode* head = NULL;
ListNode* tail = NULL;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
ListNode* node = new ListNode(x);
if (head == NULL) {
head = node;
tail = node;
} else {
tail->next = node;
tail = node;
}
}
return head;
}
ListNode* reverseList(ListNode* head) {
ListNode* prev = NULL;
ListNode* curr = head;
while (curr != NULL) {
ListNode* next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
return prev;
}
void printList(ListNode* head) {
while (head != NULL) {
cout << head->val << " ";
head = head->next;
}
cout << endl;
}
int main() {
ListNode* head = buildList();
head = reverseList(head);
printList(head);
return 0;
}
```
这里 `buildList()` 函数用于按照用户输入的数据利用尾插法建立单链表,并返回链表的头指针;`reverseList()` 函数用于利用头插法完成单链表的逆置,并返回逆置后的链表的头指针;`printList()` 函数用于输出链表的每个节点的值,方便我们观察逆置后的结果。在 `main()` 函数中,我们首先调用 `buildList()` 函数建立单链表,然后调用 `reverseList()` 函数逆置链表,最后调用 `printList()` 函数输出逆置后的链表。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)