创建链表以输入-1为结束
时间: 2024-09-10 19:05:04 浏览: 42
创建链表以-1作为结束标志通常是在处理递归算法或者无限循环时的一种设计技巧。在C语言中,你可以这样创建一个链表:
1. 首先,定义一个空链表的头结点:
```c
struct ListNode {
int data;
struct ListNode* next;
};
ListNode* head = NULL;
```
2. 当用户输入值时,检查是否等于-1,如果是,则设置为结束标记,否则新建一个节点并添加到链表尾部:
```c
if (value != -1) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->data = value;
newNode->next = head;
head = newNode;
}
```
3. 在遍历链表时,可以通过`next`指针直到遇到`NULL`为止,因为最后一个节点的`next`会指向`head`,即链表的开始,而`head`在最后会被赋值为`NULL`,形成递归终止条件:
```c
while (current && current->data != -1) { // current 为当前节点
// 处理节点...
current = current->next;
}
```
相关问题
创建链表以输入-1结束
以下是Python代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def createLinkedList():
head = ListNode()
tail = head
while True:
val = int(input())
if val == -1:
break
node = ListNode(val)
tail.next = node
tail = node
return head.next
if __name__ == "__main__":
linkedList = createLinkedList()
while linkedList:
print(linkedList.val, end=" ")
linkedList = linkedList.next
```
使用时,调用`createLinkedList()`函数即可创建一个带头结点的链表,输入-1时结束。程序会输出创建的链表的值序列。
C语言实现:【问题描述】 输入一组整数,以-1作为结束条件,用递归方法创建单链表,打印链表 【输入形式】 一组整数,以-1作为结束条件(-1不包含在单链表中) 【输出形式】 打印链表 【样例输入】 1 2 3 -1 【样例输出】 1 2 3
以下是 C 语言实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
ListNode* createList() {
int num;
scanf("%d", &num);
if (num == -1) {
return NULL;
}
ListNode *node = (ListNode*)malloc(sizeof(ListNode));
node->val = num;
node->next = createList();
return node;
}
void printList(ListNode *head) {
if (head == NULL) {
printf("\n");
return;
}
printf("%d ", head->val);
printList(head->next);
}
int main() {
ListNode *head = createList();
printList(head);
return 0;
}
```
具体思路是:输入整数,若为 -1 则返回空指针,否则创建一个新节点,并将其 next 指向下一个节点,直到输入为 -1,链表创建完成。打印链表时,先打印当前节点的值,然后递归打印下一个节点。
阅读全文