Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29327
  • 博文数量: 7
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-10 15:39
个人简介

。。

文章分类

全部博文(7)

文章存档

2016年(7)

我的朋友

分类: C/C++

2016-06-12 14:31:52

栈和队列.xls 
链式队列的本质:一个队头(有两个节点类型的指针:储存表头的地址和表尾的地址);
typedef struct node {
    DATATYPE data;
    struct node *next;
}Linknode;

typedef struct queue {
    Linknode *front;
    Linknode *rear;
}Linkqueue;

//先创建一个空的队列
Linkqueue *create_empty_linkqueue()
{
    //创一个队头和一个头节点
    Linkqueue *q;
    q = (Linkqueue *)malloc(sizeof(Linkqueue));
    Linknode *head;
    head = (Linknode *)malloc(sizeof(Linknode));
    if(head == NULL || q == NULL){
        printf("Error,no free memory for malloc!\n");
        return NULL;
    }
    q->front = head;
    q->rear = head;
    head->next = NULL;
    return q;
}
链式结构不会满,所以只要判断是不是为空就行了
int is_empty_linkqueue(Linkqueue *q)
{
    return L->front == L->rear ? 1 : 0;
}
数据进队列:
void enter_queue(Linkqueue *q, DATATYPE data)
{
    Linknode *temp;
    temp = (Linknode *)malloc(sizeof(Linknode));
    if(temp == NULL){
        printf("Error,no free memory for malloc!\n");
        return;
    }
    temp->data =data;
     temp->next = NULL;  
    q->rear->next = temp;
    q->rear = temp;
    return;
}
数据出队列:
DATATYPE delete_Linkqueue(Linkqueue *q)
{
    DATATYPE data;
    Linknode *t;
    if(is_empty_linkqueue(q)){
        printf("The linkqueue is empty!\n");
        return;
    }
    t = q->front;
    data = t->next->data;
    q->front = t->next;
    free(t);
    
    return data;
}



阅读(2224) | 评论(0) | 转发(0) |
0

上一篇:linux之IO模型

下一篇:linux之线程互斥锁

给主人留下些什么吧!~~