用C语言解决,输入一个整数序列遇到负数时停止建立一个线性链表存储读入的数据然后从键盘读入数据x在该链表中查出有无比x大的数据有则全部输出没有则输出no found
时间: 2024-10-14 13:16:08 浏览: 22
C语言循环实现输入一批整数统计正负数个数
在C语言中,你可以使用结构体表示链表节点,并结合循环和条件判断来实现这个功能。首先,定义一个链表节点结构:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode {
int data;
struct ListNode* next;
} ListNode;
ListNode* createListNode(int x) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->data = x;
newNode->next = NULL;
return newNode;
}
void insertSortedList(ListNode** head, int x) {
if (*head == NULL || (*head)->data > x) {
*head = createListNode(x);
} else {
ListNode* current = *head;
while (current->next != NULL && current->next->data < x) {
current = current->next;
}
current->next = createListNode(x);
}
}
void printLinkedList(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
ListNode* head = NULL;
int x;
// 读取整数序列直到遇到负数
while (scanf("%d", &x) == 1 && x >= 0) {
insertSortedList(&head, x);
}
// 从键盘读取查询值
scanf("%d", &x);
// 查找并打印大于给定值x的元素
ListNode* current = head;
if (head != NULL && current->data > x) {
printLinkedList(head);
} else {
printf("No found\n");
}
return 0;
}
```
在这个程序中,`insertSortedList`函数会将输入的正整数插入到已排序的链表中,`main`函数负责读取输入、构建链表以及查找并输出大于给定值的元素。
阅读全文