赞
踩
单链表的删除:通过图来看思路
p指针用来找链表中数字为x的位置,pre指针始终指向p指针所指向位置的前一个位置
最好自己在纸上模拟一下
代码:
#includeusing namespace std;
typedef struct Node
{
int value;
struct Node *next;
}node,*linkedlist;
linkedlist linkedlistdelete(linkedlist l,int x)
{
node *p=(node *)malloc(sizeof(node));
p=l->next;//p指针就代表链表的第一个节点,然后p指针往下走
node *pre=(node *)malloc(sizeof(node));//必须维护pre指针,pre指针始终指向的是p指针指向的节点的前一个节点
while (p->value!=x)//只要p指针指向的节点的数字不等于x,p指针就往下走
{
pre=p;
p=p->next;
}
pre->next=p->next;//程序到这了,说明找到了数字为x的节点了,pre指向的是这个节点的前一个节点,让该节点的下一个节点直接等于数字等于x节点的下一个节点
free(p);//把数字等于x的节点释放掉
return l;
}
往单链表i位置插入一个数x 通过图看思路
pre指针作用是到达链表中的指定位置,即i位置 p指针(这里叫指针不太准确)为新加的链表结构
代码:
#includeusing namespace std;
typedef struct Node
{
int value;
struct Node *next;
}node,*linkedlist;
linkedlist linkedlistinsert(linkedlist l,int i,int x)//指针l指向的是链表的第一个节点(指针l并不是链表中的第一个节点,只是指向链表的第一个节点),i表示加入到链表中的i位置,x表示要加入的数
{
node *pre=(node *)malloc(sizeof(node));//定义pre指针用来找出链表中的i位置
pre=l;//刚开始让pre指针指向链表中的第一个节点的位置。注意:这里是地址与地址之间的赋值。
int index;
for(index=1;indexnext;//让pre指针指向pre现在指向节点的下一个节点
node *p=(node *)malloc(sizeof(node));//新建一个节点
p->value=x;
p->next=pre->next;//让新建的节点p指向i位置节点的下一个节点
pre->next=p;//pre节点(原先i位置上的节点)指向新建的p节点
return l;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。