不带头节点的单链表:
typedef int ELEM_TYPE;
typedef struct Node
{
ELEM_TYPE mdata;
struct Node* pnext;
}Node,*PNode;void Init(PNode* phead);
bool InsertTail(PNode* phead, ELEM_TYPE val);
bool InsertHead(PNode* phead, ELEM_TYPE val);
PNode BuyNode(ELEM_TYPE val);
void Show(PNode phead);
void Clear(PNode* phead);
void Destory(PNode* phead);
bool DeletePos(PNode* phead, int pos);
//链表的初始化
void Init(PNode* phead)
{
if (phead == NULL)
{
return;
}
*phead = NULL;
}
//创建一个新的结点
PNode BuyNode(ELEM_TYPE val)
{
PNode pnewnode = (PNode)malloc(sizeof(Node));
if (pnewnode == NULL)exit(0);
pnewnode->mdata = val;
pnewnode->pnext = NULL;
return pnewnode;
}
//尾插
bool InsertTail(PNode* phead, ELEM_TYPE val)
{
if (phead == NULL)
{
return false;
}if (*phead == NULL)
{
PNode pnewnode = BuyNode(val);
*phead = pnewnode;
return true;
}PNode pCur = *phead;
while (pCur->pnext != NULL)
{
pCur = pCur->pnext;
}PNode pnewnode = BuyNode(val);
pCur->pnext = pnewnode;
return true;
}
//头插
bool InsertHead(PNode* phead, ELEM_TYPE val)
{
if (phead == NULL)
{
return false;
}
PNode pnewnode = BuyNode(val);
pnewnode->pnext = *phead;
*phead = pnewnode;
return true;
}
//打印
void Show(PNode phead)
{
PNode pCur = phead;
while (pCur != NULL)
{
printf("%d ", pCur->mdata);
pCur = pCur->pnext;
}
printf("\n");
}
//清空链表
void Clear(PNode* phead)
{
if (phead == NULL)
{
return;
}
PNode pCur = *phead;
PNode pNext = pCur;
while (pCur != NULL)
{
pNext = pCur->pnext;
free(pCur);
pCur = pNext;
}
*phead = NULL;
}
void Destory(PNode* phead)
{
Clear(phead);
}
链表_单链表_不带头节点的单链表
最新推荐文章于 2021-11-12 01:06:57 发布