数据结构-链表队列实现
实现的方法是非常简单的,队列是非常重要的基本存储数据的方式之一,同时也是创建数的基本之一。使后续学习的基础:
实现的代码:
typedef int Element;
typedef struct queue{
Element data;
struct queue *next;
}Node;
typedef struct Queue{
Node *rear;
Node *front;
int size;
}Queue;
void iniQueue(Queue *q)
{
q->rear=q->front=(Node*)malloc(sizeof(Node));
if(!q->front)
return ;
q->rear->next=NULL;
q->size=0;
}
void clearQueue(Queue *q)
{
q->rear=q->front;
q->size=0;
q->rear->next=NULL;
}
void Enqueue(Queue *q,Element e)
{
Node *p=(Node*)malloc(sizeof(Node));
p->data=e;
if(q->size==0)
{
q->rear->data=e;
q->rear->next=NULL;
q->size++;
}
else
{
while(q->rear->next)
{
q->rear=q->rear->next;
}
q->rear->next=p;
q->rear=p;
q->size++;
q->rear=p;
q->rear->next=NULL;
}
}
void DeQueue(Queue *q,Element *e)
{
if(q->size==0)
return ;
else
{
Node *p=q->front;
q->front=q->front->next;
*e=q->front->data;
q->size--;
free(p);
}
}
void show(Queue *q)
{
Node *p=q->front;
Node *r=q->rear;
if(q->size==0)
return ;
else
{
do{
printf("%d --->",p->data);
p=p->next;
}while (p!=r) ;
printf("%d",r->data);
printf("\n");
}
}
int main(int argc, const char * argv[]) {
// insert code here...
printf("Hello, World!\n");
Queue Q;
Element data;
Element arr[]={12,23,34,45,56,67,78,56,45,34,23,43};
iniQueue(&Q);
for(int i=0;i<12;i++)
Enqueue(&Q, arr[i]);
show(&Q);
printf("the size of Queue is %d\n",Q.size);
DeQueue(&Q, &data);
printf("the data is from Queue:%d\n",data);
show(&Q);
printf("the size of Queue is %d\n",Q.size);
return 0;
}