链表代码修改

链表代码修改

代码如下:
struct LinkNode
{
int data;
struct LinkNode *pnext;
};

typedef struct LinkNode node; //简化类型

void add_head(node *pphead, int data)//头部添加节点,返回头节点
{
node
pnew = malloc(sizeof(node));//新节点
pnew->data = data;
pnew->pnext = NULL; //赋值
if (*pphead == NULL)
{
*pphead = pnew;//直接链接
}
else
{
pnew->pnext = *pphead;
*pphead = pnew;
}
}

node* deletefirst(node* phead, int finddata)//删除
{
node* p1=NULL, * p2=NULL;
int xx = 0;
p1 = phead; //保存头节点
while (p1 != NULL)
{
if (p1->data != finddata)//头节点开始找
{
p2 = p1;//保存p1上一个位置
p1 = p1->pnext;//向前移动
}
else
{
if (p1 != phead)
{
p2->pnext = p1->pnext; //跳过p1
free(p1);
}
else
{
phead = phead->pnext; //头部删除
free(p1);
}
break;
}
}
return phead;
}

对于节点插入请参考节点删除的格式即可,把删除和插入都在break之前执行就好了,这样子删除和插入无效的就跳过不会报错了。

下面是一个简单的 C 语言链表修改原有数据的代码示例: ```c #include <stdio.h> #include <stdlib.h> typedef struct ListNode { int data; struct ListNode* next; } ListNode; void modifyList(ListNode* head, int target, int newValue) { ListNode* current = head; while (current) { if (current->data == target) { current->data = newValue; return; } current = current->next; } } int main() { // 创建链表 ListNode* head = (ListNode*)malloc(sizeof(ListNode)); head->data = 1; head->next = NULL; ListNode* second = (ListNode*)malloc(sizeof(ListNode)); second->data = 2; second->next = NULL; head->next = second; ListNode* third = (ListNode*)malloc(sizeof(ListNode)); third->data = 3; third->next = NULL; second->next = third; // 修改链表中的数据 modifyList(head, 2, 4); // 输出链表中的数据 ListNode* current = head; while (current) { printf("%d\n", current->data); current = current->next; } // 释放链表所占用的内存 current = head; while (current) { ListNode* temp = current; current = current->next; free(temp); } return 0; } ``` 在上面的代码中,`modifyList` 函数可以接收一个链表的头结点指针、需要修改的数值、以及新的数值作为参数。函数会遍历整个链表,找到第一个值为 `target` 的节点,并将其值修改为 `newValue`。如果链表中不存在值为 `target` 的节点,则不做任何修改。 在 `main` 函数中,我们创建了一个简单的链表,然后调用 `modifyList` 函数将链表中值为 2 的节点修改为 4。最后,我们输出修改后的链表,并释放链表所占用的内存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值