数据结构-链表队列实现
2017-08-15 17:16
603 查看
实现的方法是非常简单的,队列是非常重要的基本存储数据的方式之一,同时也是创建数的基本之一。使后续学习的基础:
实现的代码:
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;
}
测试用例:
实现的代码:
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;
}
测试用例:
相关文章推荐
- 用单链表与数组实现队列先进先出的数据结构
- 【数据结构练习】基于链表结构实现的队列
- 数据结构:C_链表队列的实现
- 数据结构:双向链表实现队列与循环链表
- 数据结构(队列--单链表表实现--不含队头尾指针)
- 几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---栈篇
- java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表
- 数据结构示例之用链表实现顺序队列
- 几种简单的数据结构的C++实现,树,图,链表,环形队列,栈等---环形队列篇
- 数据结构:用单链表实现的队列(2)
- java数据结构之LinkedQueue(用链表实现的双端单向队列)
- 数据结构---队列的链表实现
- 数据结构_队列_用链表动态建立释放节点实现队列各种操作_C++实现
- 数据结构-用链表实现队列
- 【数据结构】队列-链表的实现
- Lua中使用table实现的其它5种数据结构(数组、链表、队列、集合和包、StringBuild)
- 数据结构---双向链表实现队列与循环链表
- Java中链表、堆栈、队列、二叉树、散列表等数据结构的实现
- 数据结构学习中的简单问题(一):用链表方式实现的队列输出杨辉三角
- 一步一步学数据结构之1--1(队列--单链表实现--含队头尾指针)