這樣的話應(yīng)該符合你的要求:
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、虛擬空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、武夷山網(wǎng)站維護(hù)、網(wǎng)站推廣。
#includestdio.h
void?add(int?queue[],int?x);
int?Top(int?queue[]);
void?del(int?queue[]);
int?end=0;
int?main()
{
int?n;
scanf("%d",n);//將要入隊(duì)列n個(gè)元素
int?queue[1000];
for(int?i=1;i=n;i++)//輸入n個(gè)元素
{
add(queue,i);//將i加入隊(duì)列
}
//驗(yàn)證加入隊(duì)列的元素,將隊(duì)列中的元素按照輸入的順序輸出:
for(?i=1;i=n;i++)
{
printf("%d?",Top(queue));//Top函數(shù)返回隊(duì)頭元素
del(queue);//刪除隊(duì)頭元素
}
//驗(yàn)證輸出已經(jīng)出隊(duì)列后的隊(duì)列(數(shù)組)元素:
printf("\n");
for(i=1;i=n;i++)
printf("%d?",queue[i]);
printf("\n");
return?0;
}
void?add(int?queue[],int?x)
{
queue[++end]=x;
}
int?Top(int?queue[])
{
return?queue[1];//注意,這里的函數(shù)始終return?queue[1];這里是和將普通數(shù)組中的元素輸出最大的不同之處。?。。。。。?/p>
}
void?del(int?queue[])
{
for(int?i=2;i=end;i++)
{
queue[i-1]=queue[i];
}
queue=0;//將刪除后的地方置0
end--;
}
int top;//要求棧頂為全局變量
int gettop(int a[])
{
int e;
if(top == -1)//top=-1視為棧空.視具體情況分析,也可以top==0
{
printf("??誠(chéng)n");
}
e=a[top];//取值
top--; //棧頂自減
return e;
}
-是指針變量對(duì)結(jié)構(gòu)成員的調(diào)用等同 點(diǎn)符號(hào).
對(duì)順序循環(huán)隊(duì)列,常規(guī)的設(shè)計(jì)方法是使用隊(duì)尾指針和隊(duì)頭指針,隊(duì)尾指針用于指出當(dāng)前胡隊(duì)尾位置下標(biāo),隊(duì)頭指針用于指示當(dāng)前隊(duì)頭位置下標(biāo)?,F(xiàn)要求:
(1)設(shè)計(jì)一個(gè)使用隊(duì)頭指針和計(jì)數(shù)器胡順序循環(huán)循環(huán)隊(duì)列抽象數(shù)據(jù)類型,其中包括:初始化,入隊(duì)列,出隊(duì)列,取隊(duì)頭元素肯判斷隊(duì)列是否非空;
#include?"stdio.h"
#include?"malloc.h"
#include?"stdlib.h"
#include?"conio.h"
#define?MAX?80
typedef?struct
{
int?data[MAX];
int?front,rear;
int?num;
}SeQue;
SeQue?*Init_SeQue()
{
SeQue?*s;
s=new?SeQue;
s-front=s-rear=MAX-1;
s-num=0;
return?s;
}
int?Empty_SeQue(SeQue?*s)
{
if(s-num==0)
return?1;
else
return?0;
}
int?In_SeQue(SeQue?*s,int?x)
{
if(s-num==MAX)
return?0;
else
{?
s-rear=(s-rear+1)%MAX;
s-data[s-rear]=x;
s-num++;
return?1;
}?
}?
int?Out_SeQue(SeQue?*s,int?*x)
{
if(Empty_SeQue(s))
return?0;
else
{
s-front=(s-front+1)%MAX;
*x=s-data[s-front];
s-num--;
return?1;
}
}
void?Print_SeQue(SeQue?*s)
{
int?i,n;
i=(s-front+1)%MAX;
n=s-num;
while(n0)
{?printf("%d?",s-data[i]);
i=(i+1)%MAX;
n--;
}
}
void?main()
{
SeQue?*s;
int?k,flag,x;
s=Init_SeQue();
do{
printf("\\\");
printf("\\t\\t\\t循環(huán)順序隊(duì)列\(zhòng)");
printf("\\t\\t\\t***********************\");
printf("\\t\\t\\t**1-入隊(duì)**\");
printf("\\t\\t\\t**2-出隊(duì)**\");
printf("\\t\\t\\t**3-判?隊(duì)?空**\");
printf("\\t\\t\\t**4-隊(duì)列顯示**\");
printf("\\t\\t\\t**0-返回**\");
printf("\\t\\t\\t***********************\");
printf("\\t\\t\\t?請(qǐng)輸入菜單項(xiàng)(0-4):");
scanf("%d",k);
switch(k)
{
case?1:
printf("\請(qǐng)輸入入隊(duì)元素:");
scanf("%d",x);
flag=In_SeQue(s,x);
if(flag==0)
printf("\隊(duì)滿不能入隊(duì)!按任意鍵返回..");
else
printf("\元素已入隊(duì)!按任意鍵返回..");
getch();
system("cls");
break;
case?2:
flag=Out_SeQue(s,x);
if(flag==0)
printf("\隊(duì)列空出隊(duì)失敗!按任意鍵返回..");
else
printf("\隊(duì)列頭元素已出隊(duì)~!按任意鍵返回..");
getch();
system("cls");
break;
case?3:
flag=Empty_SeQue(s);
if(flag==1)
printf("\該隊(duì)列為空!按任意鍵返回..");
else
printf("\該隊(duì)列不為空!按任意鍵返回..");
getch();
system("cls");
break;
case?4:
printf("\該隊(duì)列元素為:");
Print_SeQue(s);
printf("\按任意鍵返回..");
getch();
system("cls");
break;
}
}while(k!=0);
}
/***************/
/* 鏈?zhǔn)疥?duì)列 */
/***************/
#include "stdlib.h"
#include "stdio.h"
/* 定義鏈?zhǔn)疥?duì)列類型 */
typedef int ElemType;
typedef struct QNode
{ ElemType data;
struct QNode *next;
} QNode, *QueuePtr;
typedef struct
{ QueuePtr front;
QueuePtr rear;
} LinkQueue;
/* 1、初始化鏈?zhǔn)疥?duì)列 */
void InitQueue(LinkQueue *Q)
{ Q-front=Q-rear=(QueuePtr)malloc(sizeof(QNode));
if (!(Q-front)) exit(0);
Q-front-next=NULL; }
/* 2、銷毀鏈?zhǔn)疥?duì)列 */
void DestroyQueue(LinkQueue *Q)
{ while (Q-front)
{ Q-rear=Q-front-next;
free(Q-front);
Q-front=Q-rear; }
}
/* 3、清空鏈?zhǔn)疥?duì)列 */
void ClearQueue(LinkQueue *Q)
{ QueuePtr p;
p=Q-front-next;
while (p)
{ Q-front-next=p-next;
free(p); }
Q-rear=Q-front;
}
/* 4、判斷空隊(duì)列 */
int QueueEmpty(LinkQueue Q)
{ if (Q.front==Q.rear)
return 1;
else
return 0; }
/* 5、求鏈?zhǔn)疥?duì)列長(zhǎng)度 */
int QueueLength(LinkQueue Q)
{ QueuePtr p; int n=0;
p=Q.front;
while (p!=Q.rear)
{ n++; p=p-next; }
return n;
}
/* 6、取隊(duì)頭元素 */
ElemType GetHead(LinkQueue Q)
{ if (Q.front!=Q.rear)
return Q.front-next-data;
}
/* 7、入隊(duì)列 */
void EnQueue(LinkQueue *Q, ElemType e)
{ QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
if (!p) exit(0);
p-data=e; p-next=NULL;
Q-rear-next=p;
Q-rear=p; }
/* 8、出隊(duì)列 */
void DeQueue(LinkQueue *Q, ElemType *e)
{ QueuePtr p;
if (Q-front!=Q-rear)
{ p=Q-front-next;
*e=p-data;
Q-front-next=p-next;
if (Q-rear==p) Q-rear=Q-front;
free(p); }
}
/* 9、遍歷鏈?zhǔn)疥?duì)列并輸出元素 */
void QueueTraverse(LinkQueue Q)
{ QueuePtr p;
printf("\nQueue: ");
p=Q.front-next;
while (p)
{ printf("%d\t",p-data);
p=p-next;}
}
/* 約瑟夫問(wèn)題 */
void Joseffer(int n)
{ LinkQueue Q; int i; ElemType x;
InitQueue(Q);
for(i=1; i=n; i++)
EnQueue(Q,i);
while (!QueueEmpty(Q))
{ for(i=1; i=3; i++)
{ DeQueue(Q,x);
if (i!=3)
EnQueue(Q,x);
else
printf("%5d",x);
}
}
}
/* 主函數(shù) */
main()
{ LinkQueue Q; int i; ElemType x;
InitQueue(Q);
for(i=2; i=5; i++)
EnQueue(Q,i);
printf("len:%d\n",QueueLength(Q));
while (!QueueEmpty(Q))
{ DeQueue(Q,x);
printf("%d\t",x); }
//QueueTraverse(Q);
//Joseffer(6);
}
自己去調(diào)試吧,這個(gè)是C語(yǔ)言版的鏈?zhǔn)疥?duì)列,如果看不懂或者調(diào)不出來(lái)就去看書吧。否則你這門是白學(xué)了。
注:這里是鏈?zhǔn)疥?duì)列
/***************/
/* 循環(huán)隊(duì)列 */
/***************/
#include "stdlib.h"
#include "stdio.h"
#define N 100
/* 定義循環(huán)隊(duì)列類型 */
typedef int ElemType;
typedef struct
{ ElemType *base;
int front;
int rear;
} SqQueue;
/* 1、初始化循環(huán)隊(duì)列 */
void InitQueue(SqQueue *Q)
{ Q-base=(ElemType*)malloc(N*sizeof(ElemType));
Q-front=Q-rear=0; }
/* 2、銷毀循環(huán)隊(duì)列 */
void DestroyQueue(SqQueue *Q)
{ free(Q-base); }
/* 3、清空循環(huán)隊(duì)列 */
void ClearQueue(SqQueue *Q)
{ Q-front=Q-rear=0; }
/* 4、判斷空隊(duì)列 */
int QueueEmpty(SqQueue Q)
{ if (Q.front==Q.rear)
return 1;
else
return 0; }
/* 5、求循環(huán)隊(duì)列長(zhǎng)度 */
int QueueLength(SqQueue Q)
{ return (Q.rear+N-Q.front)%N; }
/* 6、取隊(duì)頭元素 */
void GetHead(SqQueue Q, ElemType *e)
{ if (Q.front!=Q.rear)
*e=Q.base[Q.front];
}
/* 7、入隊(duì)列 */
int EnQueue(SqQueue *Q, ElemType e)
{ if ((Q-rear+1)%N==Q-front)
return 0;
Q-base[Q-rear]=e;
Q-rear=(Q-rear+1)%N;
return 1; }
/* 8、出隊(duì)列 */
int DeQueue(SqQueue *Q, ElemType *e)
{ if (Q-front==Q-rear)
return 0;
*e=Q-base[Q-front];
Q-front=(Q-front+1)%N;
return 1; }
/* 9、遍歷循環(huán)隊(duì)列并輸出元素 */
void QueueTraverse(SqQueue Q)
{ int i;
printf("\nQueue: ");
if (Q.rearQ.front) Q.rear=Q.rear+N;
for(i=Q.front; iQ.rear; i++)
printf("%d\t",Q.base[i%N]); }
/* 主函數(shù) */
main()
{ SqQueue Q; int i; ElemType x;
InitQueue(Q);
for(i=2; i=5; i++)
EnQueue(Q,i);
printf("len:%d\n",QueueLength(Q));
while (!QueueEmpty(Q))
{ DeQueue(Q,x);
printf("%d\t",x); }
QueueTraverse(Q);
}
在給你個(gè)循環(huán)隊(duì)列吧