以下是链表创建及增添,删除,销毁代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef int DateType;
struct LinkList
{
DateType Date;
struct LinkList *pNext;
};
struct LinkList *CreatLinkList(void)//创造一个空的
{
struct LinkList *pTmpNode = NULL;
pTmpNode = malloc(sizeof(struct LinkList));
if (NULL == pTmpNode)
{
return NULL;
}
pTmpNode->pNext = NULL;
return pTmpNode;
}
DateType InsertHeadLinkList(struct LinkList *phead,DateType TmpDate)//首插
{
struct LinkList *pTmpNode = NULL;
pTmpNode = malloc(sizeof(struct LinkList));
if(NULL == pTmpNode)
{
return 0;
}
pTmpNode->Date = TmpDate;
pTmpNode->pNext = phead->pNext;
phead->pNext = pTmpNode;
return 0;
}
DateType InsertTailLinkList(struct LinkList* phead, DateType TmpDate)//尾插
{
struct LinkList* pTmpNode = NULL;
pTmpNode = phead;
while (pTmpNode->pNext != NULL)
{
pTmpNode = pTmpNode->pNext;
}
struct LinkList *TmpNode = NULL;
TmpNode = malloc(sizeof(struct LinkList));
TmpNode->pNext = NULL;
TmpNode->Date = TmpDate;
pTmpNode->pNext = TmpNode;
return 0;
}
DateType ShowLinkList(struct LinkList *pHead)//打印
{
struct LinkList *pTmpNode = NULL;
pTmpNode = pHead->pNext;
while(pTmpNode != NULL)
{
printf("%d\t",pTmpNode->Date);
pTmpNode = pTmpNode->pNext;
}
printf("\n");
return 0;
}
DateType Xiugai(struct LinkList *pHead,DateType OldDate,DateType NewDate)//修改
{
struct LinkList *TmpNode = NULL;
TmpNode = pHead->pNext;
while(TmpNode != NULL)
{
if(TmpNode->Date == OldDate)
{
TmpNode->Date = NewDate;
}
TmpNode = TmpNode->pNext;
}
return 0;
}
DateType DeleteDate(struct LinkList *pHead,DateType TmpDate)//删除
{
struct LinkList *PreLink = NULL;
struct LinkList *pTmpNode = NULL;
pTmpNode = pHead->pNext;
PreLink = pHead;
while(pTmpNode != NULL)
{
if(pTmpNode->Date == TmpDate)
{
PreLink->pNext = pTmpNode->pNext;
free(pTmpNode);
pTmpNode = PreLink->pNext;
}
else
{
pTmpNode = pTmpNode->pNext;
PreLink = PreLink->pNext;
}
}
return 0;
DateType DestoryLinkList(struct LinkList **pHead)//销毁
{
struct LinkList *FreeNode = NULL;
struct LinkList *pTmpNode = NULL;
FreeNode = pTmpNode = *pHead;
while(*pHead == NULL)
{
pTmpNode = pTmpNode->pNext;
free(FreeNode);
FreeNode = pTmpNode;
}
*pHead = NULL;
return 0;
}
}
int main(void)
{
struct LinkList *linklist = NULL;
linklist = CreatLinkList();
InsertTailLinkList(linklist, 1);
InsertTailLinkList(linklist, 2);
InsertTailLinkList(linklist, 3);
InsertTailLinkList(linklist, 4);
InsertTailLinkList(linklist, 5);
//InsertHeadLinkList(linklist,1);
//InsertHeadLinkList(linklist,2);
//InsertHeadLinkList(linklist,3);
//InsertHeadLinkList(linklist,4);
//InsertHeadLinkList(linklist,5);
ShowLinkList(linklist);
Xiugai(linklist,5,6);
ShowLinkList(linklist);
DeleteDate(linklist,6);
DeleteDate(linklist,1);
ShowLinkList(linklist);
return 0;
}