开始学习c语言
#define true 1;
#define false 0;
/*定义最大队列的长度*/
#define MAX_OUEUE_SIZE 100
/*队列的数据类型*/
typedef int dataType;
typedef struct LQueue
{
dataType LQueue_array[MAX_OUEUE_SIZE];//dataType类型的数组
int front;//头指针
int rear;//尾指针
}LQueue;
/*初始化*/
LQueue queue_init();
/*判断是否为空*/
int queue_empty(LQueue q);
/*进队*/
int queue_enter(LQueue *q, dataType e);//指针/数据元素
/*出队*/
int queue_delete(LQueue *q, dataType *e);
/*获得队头节点*/
int get_front(LQueue q, dataType *e);
/*获得队列长度*/
int get_length(LQueue q);
/*清空队列*/
void queue_clear(LQueue *q);
void visit(LQueue q);
void queue_traverse(LQueue q);
```c
#include <stdio.h>
#include<stdlib.h>
#include"LQueue.h"
LQueue queue_init()
{
LQueue q;
q.front = q.rear = 0;
return q;
}
int queue_empty(LQueue q)
{
if (q.rear==q.front)
{
return true;
}
return false;
}
int queue_enter(LQueue *q, dataType e)
{
if (q->rear==MAX_OUEUE_SIZE||q->rear+1==q->front)//超出队列长度
{
return false;
}
q->LQueue_array[q->rear] = e;
printf("q.LQueue_array[%d]=%d\n", q->rear, e);
q->rear += 1;
return true;
}
int queue_delete(LQueue *q, dataType *e)
{
if (queue_empty(*q))
{
return false;
}
*e = q->LQueue_array[q->front];
//printf("q.LQueue_array[%d]=%d\n", q->front, e);
q->front += 1;
return true;
}
int get_front(LQueue q, dataType *e)
{
if (q.front==q.rear)//队空
{
return false
}
*e = q.LQueue_array[q.front];
return true;
}
void visit(LQueue q)
{
if (q.front==q.rear)
{
printf("队列为空\n");
}
int temp = q.front;
while (temp!=q.rear)
{
printf("%d ",q.LQueue_array[temp]);
temp += 1;
}
printf("\n");
}
void queue_traverse(LQueue q)
{
visit(q);
}
int get_length(LQueue q)
{
int length = q.rear - q.front;
return length;
}
void queue_clear(LQueue *q)
{
q->front = q->rear =0;
}
int main()
{
LQueue q = queue_init();
queue_enter(&q, 1);
/*queue_enter(&q, 2);
queue_enter(&q, 3);
queue_enter(&q, 4);*/
queue_traverse(q);
dataType *e = (dataType *)malloc(sizeof(*e));
queue_delete(&q, e);
printf("queue_delete(),e=%d length=%d\n", *e, get_length(q));
//queue_traverse(q, visit);
}
调试的错误
printf在输出指定值的时候需要%d等,不像c#那样随意。
给指针*e开辟内存后,传指针作为实参不需要加*(,*e),只需(,e);不然到时会指向空指针
以后还要加强调试的能力,自己发现问题解决问题的感觉挺好的!