姓名 : 孙欢
日期 : 2018-9-5
今日结果
通过今天的学习,我了解了链表信息的传递,也知道什么是虚拟地址与物理地址,同时明白了代码的重复性。
今日任务
#include <stdio.h>
#include "queue.h"
#include <stdlib.h>
int main()
{
Q queue;
int ret,i;
ret = InitQueue(&queue);
if(ret == FATLURE)
{
printf("Init FATLUE\n");
exit(1); //退出
}
else if(ret == SUCCESS)
{
printf("Init SUCCESS\n");
}
if(ret == SUCCESS)
{
printf(" enter %d success\n",i + 1);
}
ret = EmpytQueue(queue);
if(ret == SUCCESS)
{
printf("queue is empty\n");
}
else if( ret == FATLURE)
{
printf("queue is not empty\n");
}
for(i = 0;i < 10; i++)
{
ret = EnterQueue(&queue, i + 1);
if( ret == FATLURE)
{
printf(" enter failure\n");
}
else if(ret == SUCCESS)
{
printf(" enter %d success\n",i + 1);
}
}
int length = LengthQueue(queue);
printf("Lemgth is %d\n",length);
ret = GetFront(queue);
if( ret == FATLURE)
{
printf("get front faillure!\n");
}
else
{
printf("front is %d\n", ret);
}
for(i = 0 ;i < 5; i++)
{
ret = DelQueue(&queue);
if( ret == FATLURE)
{
printf("Del faillure!\n");
}
else
{
printf ("Del %d Success\n",ret);
}
}
length = LengthQueue(queue);
printf("Lemgth is %d\n",length);
ret = GetFront(queue);
if( ret == FATLURE)
{
printf("get front faillure!\n");
}
else
{
printf("front is %d\n", ret);
}
ret = ClearQueue(&queue);
if(ret == SUCCESS)
{
printf("Clear success\n");
}
else
{
printf("CLear faillure!\n");
}
ret = GetFront(queue);
if( ret == FATLURE)
{
printf("get front faillure!\n");
}
else
{
printf("front is %d\n", ret);
}
ret = DesstoryQueue(&queue);
if( ret == FATLURE)
{
printf("Desstory faillure!\n");
}
else
{
printf("Desstory Success\n");
}
return 0
include “queue.h”
include
#ifndef QUEUE_H
#define QUEUE_H
#define MAXSIZE 10
#define SUCCESS 10000
#define FATLURE 10001
struct queue
{
int *date;
int front;
int rear;
};
typedef struct queue Q;
int EnterQueue(Q *q,int e);
int EnterQueue(Q *q,int e);
int EmpytQueue(Q q);
int LengthQueue(Q q);
int GetFront(Q q);
int DelQueue(Q *q);
int ClearQueue(Q *q);
int DesstoryQueue(Q *q);
#endif
``
include
include “queue.h”
int main()
{
Q queue;
int ret,i;
ret = InitQueue(&queue);
if(ret == FATLURE)
{
printf("Init fatlaure\n");
}
else if( ret == SUCCESS)
{
printf("Init success\n");
}
for( i = 0;i < 10; i++)
{
ret = EnterQueue(&queue, i + 1);
if(ret == FATLURE)
{
printf("Enter fatlaure\n");
}
else if( ret == SUCCESS)
{
printf("Enter %d success\n",i + 1);
}
}
int length = LengthQueue(queue);
printf("The length is %d\n",length);
ret = GetFront(queue);
if(ret == FATLURE)
{
printf("GetFront fatlaure\n");
}
else
{
printf("GetFront %d\n",ret);
}
for(i = 0; i < 3; i++)
{
ret = DelQueue(&queue);
if(ret == FATLURE)
{
printf("Delate fatlaure\n");
}
else
{
printf("Success %d\n",ret);
}
}
ret = ClearQueue(&queue);
if(ret == FATLURE)
{
printf("Clear fatlaure\n");
}
else
{
printf("Clear Success\n");
}
ret = DesstoryQueue(&queue);
if( ret == FATLURE)
{
printf("Desstory faillure!\n");
}
else
{
printf("Desstory Success\n");
}
ret = GetFront(queue);
if(ret == FATLURE)
{
printf("GetFront fatlaure\n");
}
else
{
printf("GetFront %d\n",ret);
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
include
include “queue.h”
int InitQueue(Q *q)
{
Node p= (Node )malloc(sizeof(Node));
if(NULL == p)
{
return FATLURE;
}
p->next = NULL;
q->front = q ->rear = p;
return SUCCESS;
}
int EnterQueue(Q *q, int e)
{
if(NULL == q)
{
return FATLURE;
}
if(q ->rear == NULL)
{
return FATLURE;
}
Node *p= (Node *)malloc(sizeof(Node));
if(NULL == p)
{
return FATLURE;
}
p ->date = e;
p ->next = NULL;
q ->rear->next = p;
q ->rear = p;
return SUCCESS;
}
int LengthQueue(Q q)
{
int length = 0;
Node *p = q.front ->next;
while(p)
{
length++;
p = p ->next;
}
return length;
}
int GetFront(Q q)
{
if(q.front == q.rear)
{
return FATLURE;
}
return q.front ->next ->date;
}
int DelQueue(Q *q)
{
if(NULL == q)
{
return FATLURE;
}
if(q ->rear == q ->front)
{
return FATLURE;
}
Node *p = q ->front ->next;
int e = p ->date;
q ->front ->next = p ->next;
free(p);
if(q ->rear == p)
{
q ->rear = q ->front;
}
return e;
}
int ClearQueue(Q *q)
{
if(NULL == q)
{
return FATLURE;
}
if(q ->rear == q ->front)
{
return FATLURE;
}
Node *p = q ->front ->next;
while(p)
{
q ->front ->next = p ->next;
free(p);
p = q ->front ->next;
}
q ->rear = q ->front;
return SUCCESS;
}
int DesstoryQueue(Q *q)
{
if( NULL == q)
{
return FATLURE;
}
free(q ->front);
q ->front = q ->rear = NULL;
return SUCCESS;
}
ifndef QUEUE_H
define QUEUE_H
define SUCCESS 10000
define FATLURE 10001
struct node
{
int date;
struct node *next;
};
typedef struct node Node;
struct queue
{
Node *front;
Node *rear;
};
typedef struct queue Q;
int InitQueue(Q *q);
int EnterQueue(Q *q, int e);
int LengthQueue(Q q);
int GetFront(Q q);
int DelQueue(Q *q);
int ClearQueue(Q *q);
int DesstoryQueue(Q *q);
endif
“`