环形队列的链式实现(原创)

程序是用codeblock写的,中间碰到了一个又一个的问题,都最终解决了。这个结构可以作为所有结构体的实现的一个模式。写写这些程序可以不断让自己更加深入认识指针,更加熟悉指针的各种使用。经常锻炼C基础,心里写程序更有底哈哈

链式环形队列实现

 

 

 

关于指针可能碰到的问题,在注释里差不多都说明了。

需要特别注意几个问题:

一,结构作为参数传递。这个传递方式也是和其他一样的,当需要改变传入参数的值的时候,用地址传递,使用指针参数。参数的传递类似于一般的int了,使用结构体指针就行。

二,结构体参数值传递和地址传递的调用方式的不同。结构体参数如果是以普通值传递进入参数,使用结构体.成员来访问。如果是以地址传递,也就是传入的是指针参数,就是结构体->成员来访问。这个就是结构体和结构体指针访问数据成员的差异。

三,像队列这种包含头尾队列点的结构体,在初始化的时候,要为每个一个指针结构申请空间,也就是里面的

L->front = (PNode)malloc(sizeof(QNode));
L->retail = (PNode)malloc(sizeof(QNode));

四,在取结构体成员指针指向的数据的时候,不要使用  结构体指针->指针成员->指针成员指向的数据。 这样多个"->"连接会导致编译不能识别“结构体指针->指针成员”这个指针类型,会报错的。相应的处理方法是申请一个指针指向它就行。然后操作这个指针。

五, 对于特定临界点情况的处理要慎重,比如队列数据点为0,1,2这几个情况对于环形队列是不同的,需要额外注意。

具体的算法,上面的程序里面都有了。都经过了简单的测试,应该没什么问题。

 

顺道说下CODEBLOCK的debug,到现在我不太知道,怎样使用,几次加入Watch变量都没反应囧,出错了,只能一个一个自己分析。

注:这个问题后来查了相关的论坛,原来codeblock不允许项目路径有空格和中文字符导致。

你可能感兴趣的:(队列)