C语言链式存储结构线性表的基本操作 (1)创建一个链表,初始长度为8个数据的链表。(2)选择插入数据。 (3)删除数据。
时间: 2024-12-08 10:15:17 浏览: 28
在C语言中,链式存储结构用于实现线性表,它不需要预先分配固定大小的空间,可以动态地增加或减少元素。以下是基本操作:
1. **创建链表**:
创建一个初始长度为8的数据链表,你可以定义一个节点结构体,每个节点包含数据域和指向下一个节点的指针。例如:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
Node* createList(int capacity) {
Node* head = malloc(sizeof(Node)); // 分配头节点
if (!head) {
printf("Memory allocation failed.\n");
return NULL;
}
head->next = NULL; // 初始化链表为空
for (int i = 0; i < capacity - 1; ++i) {
Node* newNode = malloc(sizeof(Node));
if (!newNode) {
break; // 如果内存不足,则停止
}
newNode->data = 0; // 可根据需要初始化数据
newNode->next = head->next;
head->next = newNode;
}
return head;
}
```
2. **插入数据**:
要向链表中插入数据,你需要找到适当的位置并添加新节点。如在头部插入:
```c
void insertAtHead(Node** head, int data) {
Node* newNode = malloc(sizeof(Node));
newNode->data = data;
newNode->next = *head;
*head = newNode;
}
```
或者在指定位置插入,可以遍历链表找到该位置插入:
```c
void insertAtPosition(Node** head, int position, int data) {
Node* newNode = malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if (position == 0) {
newNode->next = *head;
*head = newNode;
} else {
Node* current = *head;
for (int i = 0; i < position - 1 && current != NULL; ++i) {
current = current->next;
}
if (current != NULL) {
newNode->next = current->next;
current->next = newNode;
} else {
printf("Invalid position.\n");
}
}
}
```
3. **删除数据**:
删除操作通常包括删除某个特定值的节点,或者按索引删除。例如,删除头节点的值:
```c
void deleteHeadData(Node** head, int* data) {
if (*head == NULL) {
return;
}
if ((*head)->data == *data) {
Node* temp = *head;
*head = (*head)->next;
free(temp);
}
}
```
删除特定位置的节点更复杂些,涉及指针的移动:
```c
void deleteAtPosition(Node** head, int position) {
if (*head == NULL) {
return;
}
if (position == 0) { // 删除头节点
Node* temp = *head;
*head = (*head)->next;
free(temp);
} else {
Node* current = *head;
Node* previous = NULL;
for (int i = 0; i < position - 1 && current != NULL; ++i) {
previous = current;
current = current->next;
}
if (current != NULL) {
previous->next = current->next;
free(current);
} else {
printf("Invalid position.\n");
}
}
}
```
阅读全文