#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *pre;
struct node *next;
}node;
struct node tail_sentinel;
struct node head_sentinel = {0, NULL, &tail_sentinel};
struct node tail_sentinel = {0, &head_sentinel, NULL};
static node * head = &head_sentinel;
static node * tail = &tail_sentinel;
node *mk_node(int data)
{
node *p = (node*)malloc(sizeof(node));
if(p == NULL)
{
printf("malloc fair\n" );
exit(1);
}
p->data = data;
p->pre = NULL;
p->next = NULL;
return p;
}
int insert(node *p)
{
p->next = head->next;
head->next->pre = p;
p->pre = head;
head->next = p;
}
int free_node(node *p)
{
free(p);
}
int delete_node(node* p)
{
p->pre->next = p->next;
p->next->pre = p->pre;
}
int traverse()
{
node *p = NULL;
for(p = head->next;p != NULL;p = p->next)
{
printf("%d ",p->data );
}
printf("\n------------------\n");
}
int destroy()
{
node *q = NULL;
node *p = head->next;
head->next = tail;
tail->pre = head;
while(p != tail)
{
q = p->next;
free_node(p);
p = q;
}
}
int enqueue(int data)
{
insert(data);
}
node * dequeue(void)
{
if (tail->pre == head)
{
return NULL;
}
else
{
node *p = tail->pre;
delete_node(p);
return p;
}
}
int main(int argc, char const *argv[])
{
node * p = mk_node(10);
insert(p);
p = mk_node(5);
insert(p);
p = mk_node(90);
insert(p);
traverse();
return 0;
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-51013.html