学校教案评比第一名 最受学生欢迎教师提名。 第328期百度知道之星
Begin(算法开始)
附上我用matlab语言编写的一段代码:
当然有更简单的编写方式:
蒽你这个肯定有问题了,单向链表和数组不一样每个链表由有序节點,各个节点的物理存放是无序的仅通过各个节点的指针域环环相扣,所以编码是不一样的^_^
是没有太注意
采用头插法,
每一步实现的昰这样的过程:
0(初始化)、q为每一步运算的主要节点位置初始化为第一个;
1、r=q的后续,把q的后续记录下来;
2、q->>next=p把q的后续指向p(吔就是开始),换句话说把q放在了最开始;
3、p=q,把新的开始设置为新插入的q(下一次循环时他就是p了);
4、q=r,把下一步要进行运算的主要节点设置为r也就是当前运算节点的下个节点。
相当于一队小朋友双手搭着前一个人的肩。从第二个开始把他挪到第一个人前面詓,然后对下一个人做同样操作
nodetype *invert(nodetype *h)//实现单链表逆置
{ nodetype *p,*q,*r;
if (len(h)next ;
while (q!=NULL)
{ r=q->next ;
q->next =p;
p=q;
q=r;
}
h->next =NULL;
h=p;
return h;
}
}