用c语言建立一个单链表,并删除第i个结点
时间: 2023-05-21 10:06:55 浏览: 88
好的,以下是建立单链表并删除第i个节点的C语言代码:
```
#include <stdio.h>
#include <stdlib.h>
// 定义单链表节点结构体
typedef struct ListNode {
int data;
struct ListNode* next;
} ListNode;
// 建立单链表
ListNode* createList(int n) {
ListNode* head = (ListNode*)malloc(sizeof(ListNode));
head->next = NULL;
ListNode* tail = head;
for (int i = 0; i < n; i++) {
int val;
printf("请输入第 %d 个节点的值:", i + 1);
scanf("%d", &val);
ListNode* node = (ListNode*)malloc(sizeof(ListNode));
node->data = val;
node->next = NULL;
tail->next = node;
tail = node;
}
return head;
}
// 删除第i个节点
void deleteNode(ListNode* head, int i) {
int count = 0;
ListNode* prev = head;
ListNode* cur = head->next;
while (cur != NULL && count < i - 1) {
prev = cur;
cur = cur->next;
count++;
}
if (cur == NULL || cur->next == NULL) {
printf("删除失败,指定节点不存在或者无法删除最后一个节点");
return;
}
prev->next = cur->next;
free(cur);
printf("删除成功\n");
}
int main() {
int n, i;
printf("请输入链表的节点数:");
scanf("%d", &n);
ListNode* head = createList(n);
printf("请输入要删除的节点序号:");
scanf("%d", &i);
deleteNode(head, i);
return 0;
}
```