假设线性表的数据元素储存在一维数组A[n]中,则从数组的第一个分量起,依次生成结点,并逐个插入到一个初始为“空”的链表中。请用C语言编写出代码
时间: 2024-10-06 08:03:31 浏览: 36
线性表的顺序实现(数据元素是字符数组)&&字符数组名和指向它的指针区别详解
这是一个典型的将数组转换为单链表的过程,可以创建一个节点结构体并遍历数组。这里是一个简单的C语言示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建新节点
Node* createNode(int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode != NULL) {
newNode->data = value;
newNode->next = NULL;
}
return newNode;
}
// 将数组元素添加到链表
void arrayToLinkedList(int arr[], int n, Node** head) {
*head = NULL; // 初始化链表头指针
for (int i = 0; i < n; i++) {
Node* newNode = createNode(arr[i]);
if (*head == NULL) { // 如果链表为空,直接设置头节点
*head = newNode;
} else {
Node* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode; // 将新节点追加到最后
}
}
}
// 打印链表
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
Node* head = NULL;
arrayToLinkedList(arr, n, &head);
printf("Array elements converted to linked list:\n");
printList(head);
return 0;
}
```
这段代码首先定义了链表节点结构,然后提供了一个函数`arrayToLinkedList`,它接受一个整数数组和它的长度,以及一个指向链表头指针的指针。循环遍历数组,为每个元素创建一个新的链表节点,并将其插入链表的适当位置。
运行这个程序,你会看到数组元素已按照顺序添加到了链表中。
阅读全文