链表LinkList.c实现

来源:互联网 发布:淘宝睡衣买家秀 编辑:程序博客网 时间:2024/06/05 11:46
#include "LinkList.h"#include <malloc.h>#include <stdio.h>typedef struct _tag_LinkList{    LinkListNode  header;    int length;}TLinkList;LinkList*   LinkList_Create(){    TLinkList *sList = (TLinkList*)malloc(sizeof(TLinkList));        if(sList != NULL)    {          sList->header.next = NULL;          sList->length = 0;    }    return sList;}void LinkList_Destroy(LinkList* list){     free(list);}void LinkList_Clear(LinkList* list){    TLinkList*  sList  = (TLinkList*)list;    if(sList != NULL)    {         sList->header.next = NULL;         sList->length = 0;    }}int  LinkList_Length(LinkList* list){     int ret = -1;     TLinkList* sList = (TLinkList*)list;     if(sList != NULL)     {          ret = sList->length;     }     return ret;}int LinkList_Insert(LinkList* list,LinkListNode* node,int pos){     TLinkList*  sList  =  (TLinkList*)list;     int ret = (sList != NULL);     int i = 0;           ret = ret && (pos>=0) && (node != NULL);     if(ret)     {         LinkListNode* current = (LinkListNode*)sList;         for(i=0;(i<pos)&&(current->next != NULL);i++)         {             current = current->next;         }         node->next = current->next;         current->next = node;         sList->length++;     }     return ret;}LinkListNode*  LinkList_Get(LinkList* list, int pos){    TLinkList* sList   = (TLinkList*)list;    LinkListNode* ret = NULL;    int i =0;        if((sList != NULL) && (pos >= 0) && (pos<sList->length))    {        LinkListNode* current = (LinkListNode*)sList;        for(i=0;i<pos;i++)        {            current = current->next;        }        ret = current->next;    }    return ret;}LinkListNode*  LinkList_Delete(LinkList* list,int pos){     TLinkList* sList = (TLinkList*)list;     LinkListNode* ret = NULL         int i =0;          if((sList != NULL) && (pos>=0) &&(pos < sList->length))     {         for(i=0;i<pos;i++)         {             current = current->next;         }         ret = current->next;        current->next = ret->next;        sList->length--;     }     return ret;     }

0 0