当前位置: 首页 > news >正文

甘肃省住房城乡建设厅网站软文广告营销

甘肃省住房城乡建设厅网站,软文广告营销,网站程序如何上传,开封市建设局网站目录一.链表的分类二.与单链表相比三.实现增删查改1.双向循环链表结构的创建2.创建新节点3.初始化链表4.头插和尾插5.判断链表是否为空6.头删和尾删7.打印函数8.查找函数9.删除pos位置节点10.在pos前位置插入数据11.优化升级一.链表的分类 链表可有根据单向双向、有无哨兵位、…

目录

  • 一.链表的分类
    • 二.与单链表相比
      • 三.实现增删查改
        • 1.双向循环链表结构的创建
        • 2.创建新节点
        • 3.初始化链表
        • 4.头插和尾插
        • 5.判断链表是否为空
        • 6.头删和尾删
        • 7.打印函数
        • 8.查找函数
        • 9.删除pos位置节点
        • 10.在pos前位置插入数据
        • 11.优化升级

一.链表的分类

链表可有根据单向双向有无哨兵位是否循环分为八种类型,只要我们学习最简单的无头单向非循环链表以及最复杂的双向循环链表,其他的类型也就可以很好地解决了。

二.与单链表相比

与单链表相比较,单链表结构简单,一般不会单独用来存储数据,一般作为其他数据结构的子结构来使用。而双向循环链表结构复杂,但功能丰富使用便捷

三.实现增删查改

1.双向循环链表结构的创建

双向链表与之前我们剖析的单链表不同,单链表只能通过next指针向后访问导致单链表的局限性大,而双向链表不仅可以向后访问还可以向前访问。所以在创建双向链表时就需要多一个指针:

typedef int LTDataType;typedef struct ListNode
{LTDataType data;struct ListNode* next;struct ListNode* prev;
}LTNode;

2.创建新节点

在初始化和后续进行插入操作时,我们都需要创建出一个新节点进行使用,所以我们编写分装创建新节点的函数:

LTNode* CreateList(LTDataType x)
{LTNode* newnode = (LTNode*)malloc(sizeof(LTNode));if (newnode == NULL){perror("newnode malloc");return NULL;}newnode->next = NULL;newnode->data = x;newnode->prev = NULL;return newnode;
}

3.初始化链表

因为是双向循环的链表所以哨兵位的头节点的nextprev指针都指向自己:

LTNode* LTInit()
{LTNode* phead = CreateList(-1);phead->next = phead;phead->prev = phead;return phead;}

4.头插和尾插

在双向循环的结构便利下,相较于单链表,找尾的操作会非常简单,只需要访问哨兵位的上一个节点即可。

void PushFront(LTNode* head, LTDataType x)
{assert(head);LTNode* newnode = CreateList(x);LTNode* tail=head->next;newnode->next = head->next;newnode->prev = head;tail->prev = newnode;head->next = newnode;}
void PushBack(LTNode* head, LTDataType x)
{assert(head);LTNode* newnode = CreateList(x);LTNode* tail = head->prev;tail->next = newnode;newnode->prev = tail;newnode->next = head;head->prev = newnode;
}

5.判断链表是否为空

我们在进行删除操作前,应判断此时链表是否为空,如果已经为空则不能进行删除操作。

bool Empty(LTNode* head)
{assert(head);return head->next == head;
}

6.头删和尾删

void PopFront(LTNode* head)
{assert(head);assert(!Empty(head));LTNode* tail = head->next;head->next = head->next->next;free(tail);tail = NULL;}void PophBack(LTNode* head)
{assert(head);assert(!(Empty(head)));LTNode* tail = head->prev;LTNode* tailprev = tail->prev;tailprev->next = head;head->prev = tailprev;free(tail);tail = NULL;
}

7.打印函数

在编写链表的插入删除功能时,我们常需要对代码进行测试,所以编写打印函数:

void LTPrin(LTNode* phead)
{assert(phead);printf("<=head=>");LTNode* cur = phead->next;while (cur != phead){printf("%d<=>", cur->data);cur = cur->next;}printf("\n");
}

8.查找函数

LTNode* ListFind(LTNode* head, LTDataType x)
{assert(head);LTNode* cur = head;while (cur->data != x){cur = cur->next;}return cur;}

9.删除pos位置节点

void ListErase(LTNode* pos)
{assert(pos);LTNode* tail = pos;pos->next->prev = pos->prev;pos->prev->next = pos->next;free(tail);tail = NULL;
}

10.在pos前位置插入数据

void ListInsert(LTNode* pos, LTDataType x)
{assert(pos);LTNode* prev = pos->prev;LTNode* newnode = CreateList(x);newnode->next = pos;newnode->prev = prev;pos->prev = newnode;prev->next = newnode;
}

11.优化升级

在我们编写完pos位置插入和删除后,其实对上文的头删尾删头插尾插,都可以使用这两个函数来完成:

void PushBack(LTNode* head, LTDataType x)
{assert(head);ListInsert(head, x);
}void PushFront(LTNode* head, LTDataType x)
{assert(head);ListInsert(head->next, x);
}void PopFront(LTNode* head)
{assert(head);assert(!Empty(head));ListErase(head->next);
}void PophBack(LTNode* head)
{assert(head);assert(!(Empty(head)));ListErase(head->prev);
}
http://www.mmbaike.com/news/97168.html

相关文章:

  • 专业做网站排名多少钱常见的网络营销工具有哪些
  • 婚礼礼网站如何做的线上营销推广的公司
  • 英文版wordpress百度seo推广怎么做
  • 中铁建设集团华北分公司网站万网域名注册官网
  • 网站投票活动怎么做网络推广是啥
  • 网站建设服务 杭州软文推广的100个范例
  • 建设局焊工证图样女生seo专员很难吗为什么
  • 书画展示网站源码关键词查找
  • 玉林网站制作拉新推广怎么做代理
  • 微网站建设方向优化营商环境发言材料
  • 汕头网络推广团队企业关键词优化推荐
  • 成都网站关键词seo经验
  • 专业网站建设模块汕头seo全网营销
  • 网上在线客服系统软件sem优化推广
  • 网站菜单分类怎么做怎么样把自己的产品网上推广
  • 360建筑网挂靠官网怎么撤简历企业网站优化的三层含义
  • 新手小白开公司全流程版seo手机搜索快速排名
  • 网站优化 价格微信怎么推广找客源
  • 如何百度到自己的网站广州关键词排名推广
  • 网站建设功能文案给你一个网站怎么优化
  • 网站seo优化如何做网络推广是什么职业
  • 瓷器网站怎么做百度seo优化排名
  • 如何建立JavaScript网站比百度还强大的搜索引擎
  • 用dw建立网站传统营销方式有哪些
  • 学ps可以做网站策划吗武汉大学人民医院精神卫生中心
  • 一个静态网站怎么做如何推广
  • 全面的基础微网站开发百度热议排名软件
  • 日本 女做视频网站bt磁力狗
  • 专业长春网站建设网nba最新消息交易
  • 网站开发与制作毕业论文厦门seo蜘蛛屯