在单链表中将值为 y 的新节点插入到第 m 个位置,用类C语言编写程序
时间: 2024-09-28 19:10:26 浏览: 58
在C语言中,我们可以创建一个结构体表示链表节点,并实现一个函数来插入新节点。假设我们有如下的链表节点结构:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
为了在单链表中插入值为y的新节点到第m个位置,我们需要首先检查链表是否为空,然后遍历链表找到第m-1个节点,接着创建新的节点并将其插入到这个位置。以下是相应的插入函数实现:
```c
void insertNodeAtPosition(Node** head, int m, int y) {
// 创建新节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = y;
newNode->next = NULL;
// 如果链表为空,直接将新节点设为头结点
if (*head == NULL) {
*head = newNode;
return;
}
// 遍历链表,找到第m-1个节点
int position = 0;
Node* current = *head;
while (current != NULL && position < m - 1) {
current = current->next;
position++;
}
// 插入新节点到第m个位置
if (current != NULL) {
newNode->next = current->next; // 将新节点接到当前节点之后
current->next = newNode; // 更新当前节点的next指向新节点
} else { // 如果已经到达了链表尾部并且m大于链表长度,则追加新节点
newNode->next = *head;
*head = newNode;
}
}
```
在这个函数中,`head`是一个指向链表头节点的指针,`m`是要插入的位置索引(从1开始计数),`y`是要插入的值。
阅读全文