运用c语言的线性表实现上述代码
时间: 2024-10-20 11:10:04 浏览: 18
线性表顺序存储运算的算法实现
在C语言中,我们可以使用数组或动态内存分配(如`malloc()`)来实现线性表。下面是一个使用一维数组实现的插入函数示例:
```c
#include <stdio.h>
#include <string.h> // 使用memmove
#define MAX_SIZE 100 // 定义数组的最大容量
// 结构体表示线性表节点
typedef struct Node {
int data;
struct Node* next;
} Node;
// 动态插入排序表
void insert_sorted(Node** head, int x) {
if (*head == NULL || (*head)->data > x) {
// 创建一个新的节点并将x赋值
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = x;
newNode->next = *head;
*head = newNode; // 更新头节点
} else {
Node* current = *head;
while (current->next != NULL && current->next->data < x) {
current = current->next;
}
// 插入新节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = x;
newNode->next = current->next;
current->next = newNode;
}
}
// 输出顺序表
void print_list(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
int size, num;
printf("Enter the length of the list: ");
scanf("%d", &size);
Node* head = NULL;
printf("Enter elements in ascending order:\n");
for (int i = 0; i < size; i++) {
scanf("%d", &num);
insert_sorted(&head, num);
}
printf("Sorted list after insertion: ");
print_list(head);
return 0;
}
```
在这个例子中,我们首先创建了一个空链表`head`。用户输入递增有序的数字,插入函数会检查每个节点的值是否大于新值,如果大于则直接插入;否则遍历链表直到找到适合的位置。最后,通过`print_list`函数打印出插入后的顺序表。
阅读全文