用C语言实现已知单链表L,L中的数据为{1,3,5,7,9,11,13,15}且有序。设计算法实现如下操作: (1)使用函数生成单链表L; (2)使用函数打印出L; (3)使用函数插入6、8、10,保证插入后仍旧有序。 (4)使用函数删除大于12的数; (5)使用函数查找6、8的位置(返回位置)。
时间: 2024-03-02 15:52:10 浏览: 74
好的,下面是 C 语言的实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义单链表结构体
struct ListNode {
int val;
struct ListNode *next;
};
// 生成单链表
struct ListNode* createList() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15};
int n = sizeof(arr) / sizeof(int);
struct ListNode *head = (struct ListNode*)malloc(sizeof(struct ListNode));
head->val = arr[0];
head->next = NULL;
struct ListNode *tail = head;
for (int i = 1; i < n; i++) {
struct ListNode *node = (struct ListNode*)malloc(sizeof(struct ListNode));
node->val = arr[i];
node->next = NULL;
tail->next = node;
tail = node;
}
return head;
}
// 打印单链表
void printList(struct ListNode *head) {
while (head != NULL) {
printf("%d ", head->val);
head = head->next;
}
printf("\n");
}
// 插入节点
void insertNode(struct ListNode *head, int val) {
struct ListNode *node = (struct ListNode*)malloc(sizeof(struct ListNode));
node->val = val;
node->next = NULL;
struct ListNode *p = head;
while (p->next != NULL && p->next->val < val) {
p = p->next;
}
node->next = p->next;
p->next = node;
}
// 删除节点
struct ListNode* deleteNode(struct ListNode *head, int val) {
struct ListNode *p = head;
while (p->next != NULL && p->next->val > val) {
p = p->next;
}
if (p->next != NULL && p->next->val == val) {
struct ListNode *q = p->next;
p->next = q->next;
free(q);
}
return head;
}
// 查找节点
int findNode(struct ListNode *head, int val) {
int pos = 0;
while (head != NULL) {
pos++;
if (head->val == val) {
return pos;
}
head = head->next;
}
return -1;
}
int main() {
// 生成单链表
struct ListNode *head = createList();
// 打印单链表
printList(head);
// 插入节点
insertNode(head, 6);
insertNode(head, 8);
insertNode(head, 10);
// 打印单链表
printList(head);
// 删除节点
head = deleteNode(head, 13);
head = deleteNode(head, 15);
// 打印单链表
printList(head);
// 查找节点
int pos6 = findNode(head, 6);
int pos8 = findNode(head, 8);
printf("pos6=%d, pos8=%d\n", pos6, pos8);
return 0;
}
```
希望对您有帮助!
阅读全文