c/c++语言开发共享C++数据结构之双向链表

本文实例为大家分享了c++数据结构之双向链表的具体代码,供大家参考,具体内容如下#include <iostream>using std::cout;using std::endl;str

c/c++开发分享C++数据结构之双向链表实例为大家分享了c++数据结构之双向链表的具体代码,供大家参考,具体内容如下

C++数据结构之双向链表

#include <iostream>  using std::cout;  using std::endl;  struct node  {      int data;      struct node * next;      struct node * pre;  };

一、创建双向链表

node * createlist()  {      node * head = new node;      if (null == head)          exit(-1);      head->next = head;      head->pre = head;      return head;  }

二、插入元素(头插法)

让新来的节点先有所指

C++数据结构之双向链表

void insertlist(node * head,int n)  {      node * cur = new node;      if (null == cur)          exit(-1);      cur->next = head->next;      cur->pre = head;      head->next = cur;      cur->next->pre = cur;            cur->data = n;  }

三、链表长度

int lenlist(node * head)  {      int i = 0;      node * t = head->next;      while (t != head)      {          i++;          t = t->next;      }      return i;  }

四、查找遍历

C++数据结构之双向链表

node * findlist(node * head,int fn)  {      node * forward = head->next;      node * back = head->pre;      while (forward != back->next)      {          if (forward->data == fn)              return forward;          if (back->data == fn)              return back;          if (forward == back)              break;          forward = forward->next;          back = back->pre;      }      return null;  }

五、删除其中元素

void deletelist(node * pfind)  {      pfind->pre->next = pfind->next;      pfind->next->pre = pfind->pre;      delete pfind;  }

六、排序

(类似于先删除 再插入)

C++数据结构之双向链表

void sortdlist(node * head)  {      int len = lenlist(head);      node *prep = null;      node *p = null;      node *q = null;      node *t = null;      for (int i = 0;i < len - 1;i++)      {          p = head->next;          q = p->next;          for (int j = 0;j < len - 1 - i;j++)          {              if ((p->data)<(q->data))              {                  p->pre->next = q;                  q->pre = p->pre;                    p->next = q->next;                  p->pre = q;                    q->next = p;                  p->next->pre = p;                    t = p;                  p = q;                  q = t;              }              p = p->next;              q = q->next;          }      }  }

七、销毁链表

void deslist(node * head)  {      head->pre->next = null;      node *t = null;      while (head != null)      {          t = head;          head = head->next;          delete t;      }  }

以上就是c/c++开发分享C++数据结构之双向链表的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

需要了解更多c/c++开发分享C++数据结构之双向链表,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/1240202.html

(0)
上一篇 2022年9月19日
下一篇 2022年9月19日

精彩推荐