当前位置: 代码迷 >> 综合 >> 循环链表-归纳笔记
  详细解决方案

循环链表-归纳笔记

热度:59   发布时间:2024-03-07 09:30:22.0

一,创建节点

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;}
}

 

  相关解决方案