数据结构线性链表c语言代码
时间: 2023-09-21 11:00:40 浏览: 127
线性链表是一种常见的数据结构,它由一系列的节点组成,每个节点包含数据和指向下一个节点的指针。下面是一个用C语言实现的线性链表的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义节点结构
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建链表
Node* createLinkedList() {
Node* head = (Node*)malloc(sizeof(Node));
head->next = NULL;
return head;
}
// 在链表末尾插入节点
void insert(Node* head, int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
Node* current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
// 在链表指定位置插入节点
void insertAt(Node* head, int data, int position) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
Node* current = head;
int i = 0;
while (current->next != NULL && i < position - 1) {
current = current->next;
i++;
}
newNode->next = current->next;
current->next = newNode;
}
// 删除链表指定位置的节点
void deleteAt(Node* head, int position) {
Node* current = head;
int i = 0;
while (current->next != NULL && i < position - 1) {
current = current->next;
i++;
}
if (current->next != NULL) {
Node* temp = current->next;
current->next = temp->next;
free(temp);
}
}
// 输出链表中的所有节点
void display(Node* head) {
Node* current = head->next;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
int main() {
Node* myList = createLinkedList();
// 插入节点
insert(myList, 1);
insert(myList, 3);
insert(myList, 5);
insert(myList, 7);
// 在指定位置插入节点
insertAt(myList, 9, 2);
// 删除指定位置的节点
deleteAt(myList, 3);
// 输出链表
display(myList);
return 0;
}
```
以上代码实现了线性链表的基本操作,包括创建链表、在链表末尾插入节点、在指定位置插入节点、删除指定位置的节点,以及输出链表中的所有节点。使用这些操作可以对线性链表进行增删改查等操作。
阅读全文