#include <stdio.h>
#include <stdlib.h>
typedef struct NODE
{
int bh;
char* name;
char* phone;
struct NODE* pNext;
}Node;
int GetBh();
Node* GetNode();
void AddNode(Node** ppHead,Node** ppEnd,Node* node);
void InsertNode(Node** ppHead,Node** ppEnd,int bh,Node* node);
void DelNode(Node** ppHead,Node** ppEnd,int bh);
int main()
{
Node* pHead = NULL;
Node* pEnd = NULL;
AddNode(&pHead,&pEnd,GetNode());
AddNode(&pHead,&pEnd,GetNode());
AddNode(&pHead,&pEnd,GetNode());
AddNode(&pHead,&pEnd,GetNode());
InsertNode(&pHead,&pEnd,1,GetNode());
DelNode(&pHead,&pEnd,2);
while(pHead != NULL)
{
printf("%d %s %s\n",pHead->bh,pHead->name,pHead->phone);
pHead = pHead->pNext;
}
return 0;
}
void AddNode(Node** ppHead,Node** ppEnd,Node* node)
{
if(NULL == *ppHead)
{
*ppHead = node;
*ppEnd = node;
}
else
{
(*ppEnd)->pNext = node;
*ppEnd = node;
}
}
int GetBh()
{
static int i = 0;
i++;
}
Node* GetNode()
{
Node* node = (Node*)malloc(sizeof(Node));
node->bh = GetBh();
node->name = "aaa";
node->phone = "111";
node->pNext = NULL;
return node;
}
void InsertNode(Node** ppHead,Node** ppEnd,int bh,Node* node)
{
Node* bj = *ppHead;
if(NULL == *ppHead)
{
return;
}
if((*ppHead)->bh == bh)
{
node->pNext = *ppHead;
*ppHead = node;
return;
}
while(bj->pNext != NULL)
{
if(bj->pNext->bh == bh)
{
node->pNext = bj->pNext;
bj->pNext = node;
return;
}
bj = bj->pNext;
}
(*ppEnd)->pNext = node;
*ppEnd = node;
}
void DelNode(Node** ppHead,Node** ppEnd,int bh)
{
Node* bj = *ppHead;
Node* pDel = NULL;
if((*ppHead)->bh = bh)
{
pDel = *ppHead;
*ppHead = (*ppHead)->pNext;
free(pDel);
pDel = NULL;
return;
}
while(bj->pNext != NULL)
{
if(bj->pNext->bh == bh)
{
pDel = bj->pNext;
bj->pNext = bj->pNext->pNext;
free(pDel);
pDel = NULL;
if(bj->pNext == NULL)
{
*ppEnd = bj;
}
return;
}
bj = bj->pNext;
}
}