摘要:首先根据第四篇中的原则,将想要实现的链表操作确定下来
1.添加
void addnode(listnode* header, listnode* newnode, int pos);
2.删除
void deletenode(listnode* header, int pos)
3.遍历
void printlist(listnode *header)
4.倒序
void reverselist(listnode *header)
5.两个链表合并
void combinelist(listnode *header, listnode *list2)
6. 查找特定节点
listnode* findnode(listnode *header, int pos)
阅读全文
摘要:看着代码,就要开始思考实现了。如果是C++来实现的话,现在我就开始构造链表类,来思考其成员函数和成员变量了,是否需要构造函数,要什么样形式的,有多少成员函数,有多少是public的,是否有继承体系等等。但是现在我们是用C来实现的。那就考虑C的特性吧。
C是没有类的概念的,因此其所有的应该就是变量和函数,如果我们仅仅是编写用来自己使用的链表程序,我们可以定义一个全局的变量,然后用函数来操作这个变量。不过这些函数就无法给其他调用者来使用,如果要给其他调用者使用,我们必须将链表本身作为函数的参数来进行传入,而在调用者处定义好链表。
不过,这样是最优美的实现吗?此时,如果是你来做。你会怎么思考?
阅读全文
摘要:围绕链表节点的定义展开了一些内容,大家感兴趣的话就看看吧。
阅读全文
摘要:我们需要的是细节,细节决定不了成功,但是能保证我们不失败。
阅读全文
摘要:作为程序员,链表这种数据结构应该是耳熟能详的了。没吃过猪肉还见过猪跑呢,大风大浪的哈希,图啊啥的都常用,何况这种基础的数据结构呢。不管是在学校里面学习数据结构的时候,在应聘考试笔试面试的时候,在公司工作应用各种库的时候,我相信大家应该或多或少都接触过链表。但是,真正的用某种特定的语言来实现链表的某些特定操作的时候,并不一定能够实现正确。这里,主要是讨论利用C和C++来实现一个链表的时候,遇到的各种问题。最终得到一个比较好的可以用于平时面试笔试等的程序。同时,也更好的理解好链表,达到“穷究”的目的。
阅读全文