📄 linkstruct.c
字号:
/*
链表结构 相关函数的实现
*/
#include"LinkStruct.h"
void InsertNode(Link * link ,void * pdata,int objecttype) // 插入元素
{
NODE * pnode=CreateNode(pdata);
pnode->typeflag=objecttype; // 类型标志赋值
link->rearptr->next=pnode; // 最后一个指向新的
pnode->prior=link->rearptr; // 新的一个指向最后一个
// 循环 环节
pnode->next=link->head;
link->head->prior=pnode;
link->rearptr=pnode; // 新插入的结点为最后一个结点。尾插法特性
link->count++; // 结点计数器+1
}
void DestroyLink(Link * link) // 销毁链表
{
NODE * q,* pDelnode=link->head->next; // 指向第一个结点并非头结点
while (pDelnode!=link->head) // 当pDelnode 指向头结点时候,说明已经删除玩了
{
q=pDelnode->next;
free(pDelnode);
pDelnode=q;
}
link->rearptr=link->head; // 指向 头结点
link->head->next=link->head->prior=link->head; // 空循环双链表时候,头结点的前驱后继指针指向自己
free(link->head); // 把头结点也销毁掉
link->count=0;
}
void LinkInit(Link * link) // 初始化链表
{
NODE * pnode=(NODE *)malloc(sizeof(NODE));
InitNode(pnode);
link->head=link->rearptr=link->pcurrent=pnode;
link->count=0;
link->InsertNode=InsertNode;
link->DestroyLink=DestroyLink;
}
void InitNode(NODE * pnode)
{
pnode->prior=pnode->next=pnode;
pnode->pdata=NULL;
}
NODE* CreateNode(void *pdata)
{
NODE * pnode=(NODE *)malloc(sizeof(NODE));
if(!pnode)
{
fprintf(stderr,"Error - malloc false ! exit program");
endwin();
exit(1);
}
InitNode(pnode);
pnode->pdata=pdata;
return pnode;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -