学得数据结构——线性表后,第一次使用单链表解决一个插队问题,花了三个晚上才搞定,很悲剧,故自我总结其中的一些错误经验,大大小小,供日后鉴之。
使用的是c++编程,用Visual c++ 6.0编译 ——完全是个人的一点点心得,可能仍然存在着错误,相互指教。
1.main函数。很久不使用c++编程后的第一个错误竟是遗漏这个函数,于是组建时没有出现error和warning为,而在编译时出现了“error LNK2001: unresolved external symbol _main”的error。根据错误提示,这是一个连接错误。由于main函数是程序编译的入口,程序中没有main函数也就意味着程序无法正常编译了。将main函数添加上去后,该错误解决。
2.根据编程要求,设置单链表存储结构时,结点的数据为字符串,故将其设置成string类型,整个程序组建和编译都能通过,但在执行时出现错误,其提示为:First-chance exception in Line_List.exe: 0xC0000005: Access Violation。无法找到程序设计上的问题,最终通过其他程序段编译时的对比发现,在编译中,自己设计的链表的数据域空间无法正常被分配。但将单链表的存储结构中的数据域类型改成单个字符的char类型,程序编译成功。于是修改了数据域类型,将string类型改成了char,同时设置数据域为字符数组(字符串),设置了字符串的长度(需注意后续程序中的赋值是字符串赋值strcpy函数。如此修改之后,程序编译才顺利,可以进一步执行。
在此需要赞一下C++比C强悍之处,在处理字符串时除了可以使用各类string类型的函数之外,还可以直接读入、输出(cin/cout)字符串。
3.之后的问题,都是一些因为寻找2中所提及的错误原因产生的,如“local function definitions are illegal”,是相应的程序段没有写完整,少了最后的"}"。粗心导致的问题有时候还是很严重的。
##另外就是一些待进一步提高与晚上的地方了。
*使用单链表来存放队列成员,创建过程中使用的是逆序输入的方法,原因是,想不出,顺序输入法。呃,这个导致最后队列的输出也不得不使用了逆序的输出顺序,浪费了不少时间和空间。
*正确使用单链表,虽然会用单链表解决一些问题,但对单链表的理解程度还是不够。
*需要进一步学习C++相关知识内容。
好吧,加油!