写在前面
首先本博客的文章基本都是菜鸟奸商的学习记录,并没有高大上的东西(绝对没有!) 对一般的编程学习者来说应该没什么阅读的意义吧……
如果实在闲的慌想要看话唠或者单口相声倒是可以看一下……TuT
现在的我实在是太菜了……
============================================================================
在刚学习链表时,关于链表的遍历总有一些问题,所以去查了一下书上的算法,然后菜鸟奸商我恍然大悟!(。)下面是阅读时的一些笔记……虽然我觉得只有像我一样菜的菜鸟才觉得这个有记录的必要吧TuT。
发现对自己来说是巧妙的算法时总是很开心很想记录下来。
============================================================================
在带头结点的单链线性表L中,查找第i个元素(C语言)
由于链表存储空间的不连续性,我们不能直接用p++来访问链表中指针p指向元素的下一个元素,但是我们可以用j计数p=p->next执行的次数,执行一次即为p指向其后面一个元素。这里值得留意的是,在一个单链表中,如果要在第i个元素前插入元素,或删除第i个元素,我们通常只遍历到第i-1个元素,通过修改其后继来实现操作。
示范代码(以删除单链表中第i个元素为例):
Status DeleteLinkList(LinkList L,int i)
LinkList p,s;
p=L;
int j=0;
while(p->next&&j<i-1) //此时找到第i-1个元素
{
p=p->next;
j++;
}
if(!(p->next)||j>i-1)
return ERROR;
s=p->next;
p->next=s->next;
s->next=NULL;
e=s->data;
free(s);
return OK;
}
============================================================================================