鱼C论坛

 找回密码
 立即注册
查看: 1868|回复: 3

求助一个循环链表队列的代码

[复制链接]
发表于 2019-10-17 22:36:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
假设以带头点的循环链表表示队列,链表长度为n,只设一个指针指向队尾元素节点,不设头指针,试编写相应的队列初始化、入队和出队的算法;

实现要求:

1、输入循环链表长度n;

2、入队m个元素;

3、打印队列中所有元素;

4、出队k个元素;

5、打印队列中的元素;

6、销毁队列。



输入:

8

6

1 2 3 4 5 6

3

输出:

1 2 3 4 5 6

4 5 6

我查了网上的一些代码,感觉都不合适,不能自由输入元素,我写不出来QAQ
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-20 20:37:58 From FishC Mobile | 显示全部楼层
/*
//静态队列
struct Queue
{
    int *pBase;
    int front;//头
    int rear;//尾
};

void init(struct Queue *pQ)
{
    pQ->pBase=(int *)malloc(sizeof(int)*6);
    pQ->front=0;
    pQ->rear=pQ->front;
}

int is_full(struct Queue *pQ)
{
//一个队列有6个格子只存5个数,最后一个格子不存
    if((pQ->rear+1)%6==pQ->front)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

int is_empty(struct Queue *pQ)
{
    if(pQ->front==pQ->rear)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

int en_Queue(struct Queue *pQ,int val)
{
    if(is_full(pQ))
    {
        printf("队列已满\n");
    }
    else
    {
        pQ->pBase[pQ->rear]=val;
        pQ->rear=(pQ->rear+1)%6;
    }
    return 1;
}

int out_Queue(struct Queue *pQ,int *pval)
{
    if(is_empty(pQ))
    {
        printf("队列为空\n");
    }
    else
    {
        //先保存元素
        *pval=pQ->pBase[pQ->front];
        //front+1
        pQ->front=(pQ->front+1)%6;
    }
}

void travel_Queue(struct Queue *pQ)
{
    int i=pQ->front;
    while(i!=pQ->rear)
    {
        printf("%d ",pQ->pBase[i]);
        i=(i+1)%6;
//不能将i写成pQ->front这样会改变队列
    }
    printf("\n");
}
int main(void)
{
    struct Queue Q;
    int val;
    init(&Q);
    en_Queue(&Q,1);
    en_Queue(&Q,2);
    en_Queue(&Q,3);
    en_Queue(&Q,4);
    en_Queue(&Q,5);
    en_Queue(&Q,6);
    if(out_Queue(&Q,&val))
    {
        printf("出列元素为%d\n",val);
    }
    else
    {
        printf("出队失败\n");
    }
    travel_Queue(&Q);
    return 0;
}

*/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-20 20:40:31 From FishC Mobile | 显示全部楼层
前段时间写的,你稍微改一下,改成不是静态的就好了。然后没有销毁队列(全部出列应该算吧,用for循环好了)。输入长度也可以改成动态的,差不多这样吧,没想太多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-21 21:54:41 | 显示全部楼层
pythonsrj 发表于 2019-10-20 20:40
前段时间写的,你稍微改一下,改成不是静态的就好了。然后没有销毁队列(全部出列应该算吧,用for循环好了) ...

我其实是想找一个能自由输入元素的,我一直卡在这里QAQ 哥哥你这个不能输入啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 08:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表