请问如何学习C语言版数据结构?
我是用机械工业出版社的 双满绩点
这课本身难度不高 难在实践。
如果你能坚持一个人全部完成所有的项目(一般教师会要求组队完成几个项目,我希望你能够独自完成,这并不代表你不与人合作,只是在这期间你也去尝试着做别人的工作)
同时我希望你能找一个OJ去做(acm.zju.edu.cn 这个是ZOJ 你也可以做POJ),找一些简单题去巩固你学习的知识。
计算机的课程不是学出来的 是练出来的
计算机数据结构与算法是怎样的?
1、线性链表
线性链表也称为单链表,其每个一节点中只包含一个指针域。对链表进行插人、删除运算时只需改变节点中指针域的值。
(1) 在指针一P后插人指针9的关键运算步骤:
q ↑。 link:=P↑.link:
p ↑。 link:=q;
(2)删除指针P后继节点q的关键运算步骤:
q:=p↑ 。
link;
p↑。 link:=q↑.link;
(3)在第一个节点(或称头节点)前插人一个指针P的关键运算步骤:
p↑。 link:=head;
head:二P;
(4)删除表中头节点的关键运算步骤:
head:=head↑ 。
link:
2、双链表
在双链表中,每个节点中设置有两个指针域,分别用以指向其前驱节点和后继节点。rlink指向节点的后继,llink指向节点的前驱,这样的结构方便向后和向前查找。
(l)若要在双链表中删除指针P所指的节点时,只需修改其前驱的rlink字段和后继的Mink字段,步骤如下:
p↑ 。
llink↑。 rlink:=p↑。 rlink;
P↑T.rlink↑。 llink:=P↑.llink;
(2)如果要在指针P后面插人指针q所指的新节点,只需修改P指针所指节点的rlink字段和原来后继均Ilink字段,并重新设置q所指节点的Mink和rlink值,步骤如下:
q ↑。
Mink:=P:
q↑.rlink:=P↑.rlink;
P↑.rlink r。
Rink:=q;
p↑.rlink:=q;
3、可利用空间表
可利用空间表的作用是管理可用于链表插人和删除的节点,当链表插人需要一个新节点时,就从可利用空间表中删除第一个节点,用这个节点去做链表插人;当从链表中删除一个节点时,就把这个节点插人到可利用空间表的第一个节点前面。