| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 925 人关注过本帖
标题:假设以循环链表表示队列,并且只设一个指针指向队尾元素结点而不设头指针
只看楼主 加入收藏
LiuFuMinH
Rank: 2
等 级:论坛游民
帖 子:12
专家分:45
注 册:2013-10-27
结帖率:100%
收藏
 问题点数:0 回复次数:1 
假设以循环链表表示队列,并且只设一个指针指向队尾元素结点而不设头指针
打印判断入队都没问题   但是但运行出队的时候就出现错误
求指点


#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<windows.h>
#define TRUE  1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;

typedef struct LNode {
ElemType data;
struct LNode *next;
struct LNode *rear;
}LNode, *LinkList;
//基本操作

Status InitLinkList(LinkList &L)         //队列初始化
{
L=(LinkList)malloc(sizeof(LNode));
L->data=NULL;
L->next=L;
L->rear=L;
return 0;
}

Status Liststatus(LinkList L){  //判断队列状态
LinkList p;
p=L->rear->next;
int i=1;
if(L->data==NULL)
printf("队空\n");
else {
    while(!(L->rear==p))
{i++;p=p->next;}
printf("队列中有%d个元素\n",i);
return OK;
 }
}


Status Listpush(LinkList &L,ElemType e){               //入队
LinkList s;

if(L->data==NULL)
L->data=e;
else{
    s=(LinkList)malloc(sizeof(LNode));
s->data=e;s->next=L->rear->next;
L->rear->next=s;
}
return OK;
}


Status dequeue(LinkList &L){         //出队
LinkList s;

if(L->data==NULL)
return ERROR;
if(L->rear->next==L->rear)
L->data==NULL;
while(!(L->next==L->rear)){L=L->next;}
s=L->rear;
L->rear=L;
L->next=s->next;
free(s);
return OK;
}


Status ListPrint(LinkList L) {                     //打印

LinkList p;
p=L->rear->next;
int i=1;
if(L->data==NULL)
printf("队空\n");
else {
    while(!(L->rear==p))
{printf("%d  ",p->data);p=p->next;}
printf("%d\n",p->data);
return OK;   

}
}

void main(){
Status InitLinkList(LinkList &L);
Status Liststatus(LinkList L);
Status Listpush(LinkList &L,ElemType e);
Status dequeue(LinkList &L);
Status ListPrint(LinkList L);
LinkList L;
InitLinkList(L);
Listpush(L,5);Listpush(L,7);Listpush(L,3);Listpush(L,8);Listpush(L,55);
Liststatus(L);
ListPrint(L);

dequeue(L);
dequeue(L);
dequeue(L);
Liststatus(L);
ListPrint(L);

dequeue(L);
dequeue(L);
Liststatus(L);
}
搜索更多相关主题的帖子: include 元素 
2013-11-04 11:31
LiuFuMinH
Rank: 2
等 级:论坛游民
帖 子:12
专家分:45
注 册:2013-10-27
收藏
得分:0 
求大神指点呀
2013-11-04 18:49
快速回复:假设以循环链表表示队列,并且只设一个指针指向队尾元素结点而不设头指 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015531 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved