#include
#include
#include
typedef struct _NODE_
{
int data;
struct _NODE_ *next;
}listnode, *linklist;
void PrintLn();
linklist CreateLinklist_1();
void CreateLinklist_2(linklist *h);
int Length(linklist h);
void Visit(linklist h);
int Empty(linklist h);
linklist Search(linklist h, int value);
linklist GetLinklist(linklist h, int pos);
int Insert_1(linklist h, int pos, int value);
void Insert_2(linklist h, int value);
int Delete_1(linklist h, int pos);
void Delete_2(linklist h, int value);
void ClearLinklist(linklist h);
int main(int argc, char *argv[])
{
linklist L, L2;
L = CreateLinklist_1();
CreateLinklist_2(&L2);
Insert_1(L, 0, 0);
Insert_1(L, 1, 1);
Insert_1(L, 2, 2);
Insert_2(L, 5);
printf("Length of L is %d.\n", Length(L));
Visit(L);
Insert_2(L2, 0);
Insert_1(L2, 1, 1);
Insert_1(L2, 2, 2);
Insert_1(L2, 3, 3);
Insert_1(L2, 4, 4);
Insert_1(L2, 5, 5);
Insert_1(L2, 6, 6);
Insert_1(L2, 7, 7);
printf("Length of L2 is %d.\n", Length(L2));
Visit(L2);
Delete_1(L2, 3);
printf("Length of L2 is %d.\n", Length(L2));
Visit(L2);
return 0;
}
void PrintLn()
{
printf("\n");
}
linklist CreateLinklist_1()
{
linklist h;
h = (linklist)malloc(sizeof(listnode));
h->next = NULL;
return h;
}
void CreateLinklist_2(linklist *ph)
{
*ph = (linklist)malloc(sizeof(listnode));
(*ph)->next = NULL;
}
int Length(linklist h)
{
int len = 0;
linklist p = h;
while( p = p->next )
{
len++;
}
return len;
}
void Visit(linklist h)
{
linklist p = h;
while( p = p->next )
{
printf("%d ", p->data);
}
PrintLn();
}
int Empty(linklist h)
{
return ( NULL == h->next );
}
linklist Search(linklist h, int value)
{
linklist p = h;
while( p = p->next )
{
if( value == p->data )
{
return p;
}
}
return NULL;
}
linklist GetLinklist(linklist h, int pos)
{
int i = 0;
linklist p = h;
if( pos >= 0 )
{
while( (p = p->next) && ( i < pos ) )
{
i++;
}
if( i == pos)
{
return p;
}
}
return NULL;
}
int Insert_1(linklist h, int pos, int value)
{
int i = 0;
linklist p = h;
linklist q = (linklist)malloc(sizeof(listnode));
q->data = value;
if( pos < 0 )
{
return -1;
}
while( p && (i < pos) )
{
i++;
p = p->next;
}
if( p )
{
q->next = p->next;
p->next = q;
return 0;
}
else
{
return -1;
}
}
void Insert_2(linklist h, int value)
{
linklist p = h;
linklist q = malloc(sizeof(listnode));
q->data = value;
while( p->next && ( value > (p->next->data)) )
{
p = p->next;
}
q->next = p->next;
p->next = q;
}
int Delete_1(linklist h, int pos)
{
int i = 0;
linklist p = h;
linklist q = NULL;
while( p->next && ( i < pos ) )
{
p = p->next;
i++;
}
if(p->next)
{
q = p->next;
p->next = q->next;
free(q);
return 0;
}
return -1;
}
void Delete_2(linklist h, int value)
{
linklist q;
linklist p = h;
while(p->next)
{
if(value == p->next->data)
{
q = p->next;
p->next = q->next;
free(q);
}
if(!(p->next))
{
break;
}
}
}
void ClearLinklist(linklist h)
{
linklist p, q;
p = h;
while(p->next)
{
q = p->next;
p->next = q->next;
}
}
阅读(2094) | 评论(0) | 转发(0) |