00001 #include <stdio.h>
00002 #include "LList.h"
00003
00004 list *mklist(void)
00005 {
00006 list *l;
00007 l=(list*)malloc(sizeof(list));
00008 if (l==NULL)
00009 return NULL;
00010 l->data=NULL;
00011 l->key=-1;
00012 l->next=NULL;
00013 return l;
00014 }
00015
00016 void linsert(list *l, void *data, int len, int key)
00017 {
00018 list *newnode;
00019
00020 printf("linsert() - inserting into list at location 0x%x...\n",l);
00021 while (l->next != NULL)
00022 l=l->next;
00023
00024 newnode = (list*) malloc(sizeof(list));
00025 if (newnode==NULL) {
00026 fprintf(stderr, "insert to a list failed, Ack!\n");
00027 return;
00028 }
00029 newnode->data=data;
00030 newnode->len=len;
00031 newnode->key=key;
00032 newnode->next=NULL;
00033 l->next=newnode;
00034 }
00035
00036 void *lfind(list *l, int key, int *len)
00037 {
00038
00039 l=l->next;
00040
00041 while ((l->key!=key) && (l->next!=NULL))
00042 l=l->next;
00043 if (l->key!=key)
00044 return(NULL);
00045 *len=l->len;
00046 return l->data;
00047 }
00048
00049 void *lremove(list *l, int key, int *len)
00050 {
00051 void *data;
00052 list *it;
00053 list *nxt;
00054
00055
00056 it=l;
00057
00058 if (it->next==NULL)
00059 return NULL;
00060
00061
00062 it=it->next;
00063
00064
00065 while ((it->key!=key) && (it->next!=NULL))
00066 it=it->next;
00067
00068
00069 if (it->key!=key)
00070 return(NULL);
00071
00072
00073 *len=it->len;
00074 data=it->data;
00075
00076
00077 nxt=it->next;
00078 while (l->next!=it)
00079 l=l->next;
00080 l->next=nxt;
00081 free(it);
00082
00083 return(data);
00084 }
00085
00086