C++的数据结构一般都是提供模版的,而且在重装运算符方面做得比较出色,一般都是用类模版做数据结构,实现一个模版之后,基本上可以与很多数据类型通用.
C在这方面完全没有优势,在做数据结构前,通常先定义自己的类型,如typedef int elemtype,之后再定义数据结构,定义完数据结构后,在实现算法这方面,你实现了算法,但回过头来看看,你的算法只介定于已经定义的数据结构,即你的算法能够对你已经成为定义的数据结构里的的int(elemtype)起作用,但是,当你想把数据结构里的elemtype改为char时,你会发现原先写的算法很难运行得了.不过这个一般也不成什么问题,只是每次你想用到的数据结构时,数据结构里的数据类型不同时,你必须重新将算法再做一遍,以确保不会出错.
两者的比较,C++虽提供类模版,但存在着不确定性,因为你不确定你先前写的那个模版是否通用,这是对于中低手而言,高手一般不存在这样的问题.可以参考标准模版库STL.这里面有很多模版,而且不管是你自己定义的类型,还是编译器里已经存在的类型,都能够通用,是一个强大的工具.
对于C来说,虽然没有这方面的优势,但一个算法出来,绝对是针对某一个类型的,也就是说它具有针对性,或者说确定性.
至于两者用不用都学,这要看个人喜好了,如果你喜欢C++,想深入学习的话,C++版的数据结构不学是不行的,对于C来说也是同样的.
就我而言,我刚开始是学C的,后来转学C++,之后又回过头来学C数据结构,又转学C++数据结构.对于C来说,我觉得算法很容易写,而对于C++,有时我会拿不定主意怎么写出一个通用的算法.以上都是个人见解,至于你能明白多少,那就得看你自己了!
没什么区别,唯一的区别就是C++里面的数据结构可以定义方法(函数),而在C里面的不能。