* 先进先出的队列
* 期望优化
* 张华南
* 2012.03.17
*/
#include<stdio.h>
#include<stdlib.h>
#include"list.h"
list listinit( )
{
list L;
L = (list)malloc( sizeof(struct listrec) );
if( !L )
{
printf( "no space to malloc\n" );
exit( 0 );
}
L->next = L;
L->prev = L;
return L;
}
void insert( list L ,int abc)
{
if( L == NULL )
printf( "error" );
list li;
if( !(li=( list )malloc( sizeof(struct listrec ) )) )
{
printf( "no space to malloc\n" );
exit( 0 );
}
li->elem = abc;
li->prev = L->prev;
li->prev->next = li;
li->next = L;
L->prev = li;
}
void print( list L )
{
list l;
l = L->next;
for( l; l != L; l = l->next )
printf( "%d ",l->elem );
}
void delete( list L )
{
if( L->next != L )
{
list temp;
temp = L->next;
L->next = L->next->next;
L->next->prev = L;
free( temp );
}
else printf( "no item to delete" );
}
void deleteall( list L )
{
while( L->next != L ){
delete( L );
L = L->next;
}
free( L );
}
#ifndef _LIST_H
#define _LIST_H
struct listrec;
typedef struct listrec *list;
list listinit( );
void print( list L );
void insert( list L, int abc );
void deleteall( list L );
#endif
struct listrec{
int elem;
list next;
list prev;
};
#include<stdio.h>
#include"list.h"
int main( )
{
int i;
list listone;
listone = listinit( );
for( i = 0; i < 10; i++ )
insert(listone,2*i + 1 );
print( listone );
delete( listone );
printf( "\n" );
print( listone );
deleteall(listone );
return 0;
}