//
// linkelist.h
// wangbin_learn_c
//
// Created by 彬 王 on 12-5-17.
// Copyright (c) 2012年 sina. All rights
reserved.
//
#ifndef wangbin_learn_c_linkelist_h
#define wangbin_learn_c_linkelist_h
typedef struct node *link;
struct node {
unsigned char item;
link next;
};
link
make_node(unsigned char item);
void free_node(link p);
link
search(unsigned char key);
void insert(link p);
void delete(link p);
void traverse(void (*visit)(link));
void destroy(void);
void push(link p)
link
pop(void);
#endif
//
// linklist.c
// wangbin_learn_c
//
// Created by 彬 王 on 12-5-17.
// Copyright (c) 2012年 sina. All rights
reserved.
//
#include
#include "string.h"
static link head =NULL;
link
make_node (unsigned
char item)
{
link
p = malloc(*p);
p->item = item;
p->next = NULL;
return p;
}
void free_node(link p)
{
free(p);
}
link
search(unsigned char key)
{
link
p;
for(p=head;p;p->next)
{
if(p->item ==
key)
return p;
}
return NULL;
}
void insert(link p)
{
p->next = head;
head
= p;
}
void delete(link p)
{
link
pre;
if(p == head)
{
head
= p->next;
return;
}
for(pre=head; pre; pre =
pre->next)
{
if(pre->next ==
p )
{
pre->next = p->next;
return;
}
}
}
void traverse(void (*visit)(link))
{
link
p;
for(p=head;p;p=p->next)
{
visit(p);
}
return;
}
void destroy(void)
{
link
q,p=head;
while(p)
{
q=p;
p=p->next;
free_node(q);
}
return;
}
void push(link p)
{
insert(p);
}
link
pop(void)
{
if(NULL = head){
return NULL;
}
else{
link
p=head;
head
= head->next;
return p;
}
return;
}