创建链表以输入-1为结束
时间: 2024-09-10 12:05:04 浏览: 14
创建链表以-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时结束。程序会输出创建的链表的值序列。
创建链表以输入-1结束c语言
实现如下:
```c
#include<stdio.h>
#include<stdlib.h>
typedef struct Node {
int val;
struct Node *next;
} Node;
int main() {
Node *head = NULL;
Node *tail = NULL;
int num;
scanf("%d", &num);//先读入一个数
while (num != -1) {
Node *node = (Node *)malloc(sizeof(Node));
node->val = num;
node->next = NULL;
if (head == NULL) {//插入第一个节点
head = node;
tail = node;
} else {
tail->next = node;
tail = node;
}
scanf("%d", &num);//再读入一个数
}
//输出链表
Node *p = head;
while (p != NULL) {
printf("%d ", p->val);
p = p->next;
}
printf("\n");
//释放链表内存
p = head;//从头开始释放内存
while (p != NULL) {
Node *q = p;
p = p->next;
free(q);
}
return 0;
}
```