#include <stdio.h>
#include <stdlib.h>
typedef struct NodeData
{
int data;
struct NodeData *ptr;
struct NodeData *PrePtr;
}LinkListData;
LinkListData* CreateNode(int data){
LinkListData *ptr = malloc(sizeof(LinkListData));
ptr->data = data;
return ptr;
}
int InsertNode(LinkListData *LinkList , LinkListData *Node){
Node->ptr = LinkList->ptr;
Node->PrePtr = LinkList;
LinkList->ptr = Node;
return 0;
}
int PrintNode(LinkListData *LinkList)
{
LinkListData *Node = LinkList;
while(1){
printf("Node data=%d \n",Node->data);
if(NULL != Node->ptr){
Node = Node->ptr;
}else
{
break;
}
};
return 0;
}
int DeleteLinkList(LinkListData *LinkList){
LinkListData *FreePtr;
LinkListData *NextPtr;
if(NULL != LinkList)
FreePtr = LinkList;
else
return 0;
while(1){
if(NULL != FreePtr->ptr)
NextPtr = FreePtr->ptr;
else
NextPtr = NULL;
if(NULL != FreePtr){
printf("@@@ free address=%x\n",FreePtr);
free(FreePtr);
if(NULL != NextPtr)
FreePtr = NextPtr;
else
break;
}else
break;
}
return 0;
}
int DeleteNode(LinkListData *LinkList , LinkListData *Node){
LinkListData *CurrentNode = LinkList;
while(1){
if(CurrentNode->data == Node->data){
CurrentNode->PrePtr->ptr = CurrentNode->ptr;
free(CurrentNode);
break;
}
if(NULL == CurrentNode->ptr)
break;
CurrentNode = CurrentNode->ptr;
}
return 0;
}
int main(void){
LinkListData *LinkList = CreateNode(1);
LinkListData *a = CreateNode(2);
LinkListData *b = CreateNode(3);
LinkListData *c = CreateNode(4);
printf("@@@@ haha check the address=%x_%x_%x_%x\n",LinkList,a,b,c);
InsertNode(LinkList , c);
InsertNode(c , a);
InsertNode(LinkList , b);
PrintNode(LinkList);
DeleteNode(LinkList , a);
PrintNode(LinkList);
DeleteLinkList(LinkList);
return 0;
}
2014年11月10日 星期一
[演算法]Link List
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言