在开始学习前,可以先看看我之前关于单链表的一些内容:http://t.csdnimg.cn/sUSUb
接下来,我们来写查找函数:
代码实现如下:
SLTNode* SLTFind(SLTNode* phead, SLTDataType x)
{
SLTNode* cur = phead;
while (cur)
{
if (cur->data == x)
{
return cur;
}
cur = cur->next;
}
return NULL;
}
运行结果如下:
此外,SLTFind可以充当修改的作用
if (pos)
{
pos->data *= 10;
}
整体代码如下:
SLTNode* pos = SLTFind(plist, 3);
if (pos)
{
printf("找到啦\n");
}
else
{
printf("找不到\n");
}
//SLTFind可以充当修改的作用
if (pos)
{
pos->data *= 10;
}
PrintSLT(plist);
运行结果:
接下来我们写在pos位置之后插入x
// 分析思考为什么不在pos位置之前插入?
//因为pos之前插入,并不知道pos之前那个的地址
// 单链表在pos位置之后插入x
void SListInsertAfter(SListNode* pos, SLTDateType x)
{
assert(pos);
SListNode* newnode = BuySListNode(x);
newnode->next = pos->next;
pos->next = newnode;
}
// 分析思考为什么不删除pos位置?
// 不知道pos前的next
紧接着来写 删除pos位置之后的值
// 单链表删除pos位置之后的值
void SListEraseAfter(SListNode* pos)
{
assert(pos);
assert(pos->next);
//pos->next == pos->next->next;
SListNode* posNext = pos->next;
pos->next = posNext->next;
}
这节课的内容就到这里啦,希望大家可以提出你们的宝贵意见。我一定会悉心听取。