Traverse (L);
break;
case 3:
printf("i=");
scanf("%d",&i);
printf("e=");
scanf("%d",&e);
if(ListInsert_L(L,i,e)==ERROR )
printf("第i个元素不存在\n");
Traverse (L);
break;
case 4:
printf("i=");
scanf("%d",&i);
if(ListDelete_L(L,i,e)==ERROR)
printf("第i个元素不存在\n");
else
printf("\n删除第%d个元素是 %d\n",i,e);
Traverse (L);
break;
case 5:
printf("cur_e=");
scanf("%d",&cur_e);
if(PriorEle(L,cur_e,pre_e)==ERROR)
printf("\n%d前趋不存在\n",cur_e);
else
printf("\n%d的前趋是 %d\n",cur_e,pre_e);
Traverse (L);
break;
case 6:
printf("k=");
scanf("%d",&k);
if(search(L,k)==ERROR)
printf("输入的k值不合法\n");
else
printf("倒数第%d个元素的值是:%d\n",k,q->data);
Traverse (L);
break;
case 0:
printf("\n操作结束");
break;
default:
printf("输入选择出错!\n");
} //end of switch
}while(select != 0); //end of while
}
*************************************************************************************************
队列
***************************************************************************************************
Status InitQueue(SqQueue &Q){
Q.base = (QElemType *) malloc(MAXSIZE * sizeof(QElemType));
if (!Q.base)exit (OVERFLOW);
Q.front = Q.rear = 0;
return OK;
}
Status EnQueue(SqQueue &Q,QElemType e){
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXSIZE;
return OK;
}
int QueueLength(SqQueue Q){
return ((Q.rear-Q.front+MAXSIZE)%MAXSIZE - 1);
}
Status DeQueue(SqQueue &Q,QElemType &e){
if(Q.front == Q.rear) return ERROR;
e = Q.base[Q.front];
Q.front = (Q.front+1)%MAXSIZE;
return e;
}
/*Status TraversQueue(SqQueue &Q,QElemType e){
e=Q.base[Q.front];
while (Q.base[Q.front])
{
printf("%d ",e);
}
return OK;
}*/
int main()
{
int select,e,i;
SqQueue Q;
printf("\n1.建立一个循环队列\n");
printf("2.求队列长度\n");
printf("3.插入元素\n");
printf("4.删除元素\n");
printf("0.操作结束。\n");
printf("请输入选择:");
scanf("%d",&select);
while(select!=0)
{
switch(select)
{
case 1:
InitQueue(Q);
while(e!=-1&&i<=MAXSIZE){
int i=0;
scanf("%d",&e);
EnQueue(Q,e);
i++;
}
break;
case 2:
printf("%d",QueueLength(Q));
break;
case 3:
scanf("%d",&e);
printf("插入%d",e);
EnQueue(Q,e);
break;
case 4: