用VS2010可以使用的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 10:52:20 浏览: 79
好的,下面是可以在 VS2010 中使用的 C 语言实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义单链表结构体
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
// 生成单链表
ListNode* createList() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15};
int n = sizeof(arr) / sizeof(int);
ListNode *head = (ListNode*)malloc(sizeof(ListNode));
head->val = arr[0];
head->next = NULL;
ListNode *tail = head;
for (int i = 1; i < n; i++) {
ListNode *node = (ListNode*)malloc(sizeof(ListNode));
node->val = arr[i];
node->next = NULL;
tail->next = node;
tail = node;
}
return head;
}
// 打印单链表
void printList(ListNode *head) {
while (head != NULL) {
printf("%d ", head->val);
head = head->next;
}
printf("\n");
}
// 插入节点
void insertNode(ListNode *head, int val) {
ListNode *node = (ListNode*)malloc(sizeof(ListNode));
node->val = val;
node->next = NULL;
ListNode *p = head;
while (p->next != NULL && p->next->val < val) {
p = p->next;
}
node->next = p->next;
p->next = node;
}
// 删除节点
ListNode* deleteNode(ListNode *head, int val) {
ListNode *p = head;
while (p->next != NULL && p->next->val > val) {
p = p->next;
}
if (p->next != NULL && p->next->val == val) {
ListNode *q = p->next;
p->next = q->next;
free(q);
}
return head;
}
// 查找节点
int findNode(ListNode *head, int val) {
int pos = 0;
while (head != NULL) {
pos++;
if (head->val == val) {
return pos;
}
head = head->next;
}
return -1;
}
int main() {
// 生成单链表
ListNode *head = createList();
// 打印单链表
printf("List: ");
printList(head);
// 插入节点
insertNode(head, 6);
insertNode(head, 8);
insertNode(head, 10);
// 打印单链表
printf("List after insertion: ");
printList(head);
// 删除节点
head = deleteNode(head, 13);
head = deleteNode(head, 15);
// 打印单链表
printf("List after deletion: ");
printList(head);
// 查找节点
int pos6 = findNode(head, 6);
int pos8 = findNode(head, 8);
printf("Position of 6: %d\n", pos6);
printf("Position of 8: %d\n", pos8);
return 0;
}
```
希望对您有帮助!
阅读全文