一,创建节点
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;}
}