一,创建节点
typedef struct
{
uint8_t data[200];
uint8_t dataLen;
}Pdata ;
typedef struct node
{
Pdata data;
struct node* next;
}POS_T ;
extern Pdata SendData ;
extern Pdata RevData ;
二,创建空循环链表
POS_T * Linklist::creatLink()
{
POS_T *head=new POS_T;//(POS_T*)malloc(sizeof(POS_T));
if(head==NULL)
{
qDebug()<<"malloc memory fail";
}
head->next=head;
return head;
}
三,插入节点
void Linklist::insert(POS_T *pNode,Pdata *data) //链表的插入
{
POS_T *target=NULL;
POS_T *Temp=new POS_T;//需要分配内存
target = pNode;
memcpy(Temp->data.data,data->data,data->dataLen);
Temp->data.dataLen = data->dataLen;
while(target->next!=pNode)
{
qDebug("rrrrrrr:%d\r\n",target->data.dataLen);
target = target->next;
}
target->next=Temp;
Temp->next=pNode;
}
四,删除节点
void Linklist::delete_node(POS_T **pNode)
{
POS_T *temp,*p;
temp = *pNode;
p = *pNode;
if(temp == NULL)
{
qDebug()<<"这是一个空链表!"<<endl;
}
while(p->next!=*pNode)
{
p = p->next;
}
*pNode = (*pNode)->next;
p->next = (*pNode);
free(temp);
}
五,删除所有节点
void Linklist::removeAllnode(POS_T **pNode)
{
POS_T *p=(*pNode)->next;
POS_T *q=*pNode;
while(q->next!=*pNode)
{
q->next=p->next;
free(p);
p = q->next;
}
}
六,判断链表是否为空
bool Linklist::list_is_empty(POS_T *pNode)
{
if(pNode->next == pNode)
{
return 1;
}
else
{
return 0;
}
}