实现顺序线性表的创建,打印,插入和删除数据c语言实现完整代码
时间: 2024-09-18 10:00:47 浏览: 47
线性表顺序存储(C语言实现)每行都有注释-----考研数据结构必备
在C语言中,我们可以使用数组或者链表结构来实现顺序线性表。这里是一个简单的链表结构的顺序线性表示例,包括创建、打印、插入和删除数据的操作:
```c
#include <stdio.h>
typedef struct Node {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
} Node;
// 创建链表
Node* createList() {
Node* head = NULL;
return head;
}
// 插入数据到链表尾部
void insert(Node** head, int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode == NULL) {
printf("内存分配失败\n");
return;
}
newNode->data = value;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
return;
}
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
// 打印链表
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
// 删除指定值的节点
void deleteNode(Node** head, int value) {
Node* temp = *head;
Node* prev = NULL;
if (temp != NULL && temp->data == value) {
*head = temp->next;
free(temp);
return;
}
while (temp != NULL && temp->data != value) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) return; // 没有找到要删除的节点
prev->next = temp->next;
free(temp);
}
int main() {
Node* head = createList();
insert(&head, 1);
insert(&head, 2);
insert(&head, 3);
printList(head); // 输出: 1 -> 2 -> 3 -> NULL
deleteNode(&head, 2);
printList(head); // 输出: 1 -> 3 -> NULL
return 0;
}
```
阅读全文