c语言链表增改删查代码
时间: 2023-12-12 12:35:51 浏览: 112
以下是C语言链表增改删查的代码示例:
1.链表的定义
```c
typedef struct Node {
int data; // 数据域
struct Node *next; // 指针域
} Node, *LinkedList;
```
2.链表的创建
```c
LinkedList createLinkedList() {
LinkedList head = (LinkedList)malloc(sizeof(Node)); // 创建头结点
head->next = NULL; // 头结点指针域为空
return head;
}
```
3.链表的插入
```c
void insertNode(LinkedList L, int data, int position) {
Node *p = L;
int j = 0;
while (p && j < position - 1) { // 找到要插入位置的前一个结点
p = p->next;
j++;
}
if (!p || j > position - 1) { // 位置不合法
printf("插入位置不合法!\n");
return;
}
Node *newNode = (Node *)malloc(sizeof(Node)); // 创建新结点
newNode->data = data;
newNode->next = p->next;
p->next = newNode;
}
```
4.链表的删除
```c
void deleteNode(LinkedList L, int position) {
Node *p = L;
int j = 0;
while (p->next && j < position - 1) { // 找到要删除位置的前一个结点
p = p->next;
j++;
}
if (!(p->next) || j > position - 1) { // 位置不合法
printf("删除位置不合法!\n");
return;
}
Node *q = p->next; // q指向要删除的结点
p->next = q->next; // 删除结点
free(q); // 释放内存
}
```
5.链表的查找
```c
int findNode(LinkedList L, int data) {
Node *p = L->next;
int i = 1;
while (p) {
if (p->data == data) {
return i; }
p = p->next;
i++;
}
return -1; // 没有找到
}
```
阅读全文