回 帖 发 新 帖 刷新版面

主题:各位高手,本人有一道数据结构的题的算法~想把他转换为C程序的代码,麻烦帮帮忙~

题目如下~
假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的队列初始化,入队列和出队列的算法.

算法如下:
void InitCiQueue(CiQueue &Q)//初始化循环链表表示的队列Q
{
  Q=(CiLNode*)malloc(sizeof(CiLNode));
  Q->next=Q;
}//InitCiQueue 
void EnCiQueue(CiQueue &Q,int x)//把元素x插入循环链表表示的队列Q,Q指向队尾元素,Q->next指向头结点,Q->next->next指向队头元素
{
  p=(CiLNode*)malloc(sizeof(CiLNode));
  p->data=x;
  p->next=Q->next; //直接把p加在Q的后面
  Q->next=p;
  Q=p;  //修改尾指针

Status DeCiQueue(CiQueue &Q,int x)//从循环链表表示的队列Q头部删除元素x
{
  if(Q==Q->next) return INFEASIBLE; //队列已空
  p=Q->next->next;
  x=p->data;
  Q->next->next=p->next;
  free(p);
  return OK;
}//DeCiQueue


本人想把它用到VC或TC上运行~~
  可是对有些方面的知识又不是很清楚~~
      希望能有高手帮忙把这个算法转换为C程序~~~
    在此感谢~~
  本人乃 一 编程爱好者~~



  人年纪大了~ 思维不清楚了~ 忘后辈能帮帮我这个老菜鸟~~

回复列表 (共2个回复)

沙发

怎么没有人啊~~

板凳

首先 我不是高手
其次 我大概只能用C++实现之

楼主已经把具体步骤写得很清楚了
领会其中的思想就可以了吧
我觉得这样一段代码没必要非要亲自跑一遍哈

我来回复

您尚未登录,请登录后再回复。点此登录或注册