在不知道链表长度情况下进行链表动态创建节点
时间: 2024-03-13 21:21:50 浏览: 20
可以使用一个while循环来动态创建链表节点,直到用户输入结束标志或者其他条件满足为止。具体实现如下:
1. 定义链表节点结构体:
```c
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
```
2. 定义一个指向链表头节点的指针:
```c
ListNode *head = NULL;
```
3. 在while循环中动态创建链表节点:
```c
int val;
while (1) {
printf("请输入节点的值:");
scanf("%d", &val);
if (val == -1) {
break; // 输入结束标志
}
ListNode *node = (ListNode *)malloc(sizeof(ListNode));
node->val = val;
node->next = NULL;
if (head == NULL) {
head = node; // 第一个节点
} else {
ListNode *p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = node; // 将新节点插入链表尾部
}
}
```
4. 最后记得释放链表节点的内存:
```c
ListNode *p = head;
while (p != NULL) {
ListNode *tmp = p;
p = p->next;
free(tmp);
}
```
完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
int main() {
ListNode *head = NULL;
int val;
while (1) {
printf("请输入节点的值:");
scanf("%d", &val);
if (val == -1) {
break;
}
ListNode *node = (ListNode *)malloc(sizeof(ListNode));
node->val = val;
node->next = NULL;
if (head == NULL) {
head = node;
} else {
ListNode *p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = node;
}
}
// 遍历链表
ListNode *p = head;
while (p != NULL) {
printf("%d ", p->val);
p = p->next;
}
printf("\n");
// 释放链表节点内存
p = head;
while (p != NULL) {
ListNode *tmp = p;
p = p->next;
free(tmp);
}
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_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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)