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

网站建设收费标准公司长沙网络营销哪家平台专业

网站建设收费标准公司,长沙网络营销哪家平台专业,wordpress 制作论坛,学习做网站只学过cYan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 一、什么是双向链表 二、双向链表的实现 一、什么是双向链表 双向链表也叫双链表,是链表的一种,它的每个数据节点中都有两个指针,分别指向直接后…

 

  Yan-英杰的主页

悟已往之不谏 知来者之可追

    C++程序员,2024届电子信息研究生


 目录

一、什么是双向链表

二、双向链表的实现


一、什么是双向链表

 

        双向链表也叫双链表,是链表的一种,它的每个数据节点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表

二、双向链表的实现

        List.h

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
typedef int LTDataType;typedef struct ListNode
{struct ListNode* next;struct ListNode* prev;LTDataType data;}LTNode;LTNode* LTInit();
void LTDestory(LTNode* phead);
void LTPrint(LTNode* phead);
bool LTEmpty(LTNode * phead);
void LTPushBack(LTNode* phead,LTDataType x);
void LTPopBack(LTNode * phead);void LTPushFront(LTNode *phead,LTDataType x);
void LTPopFront(LTNode* phead);void LTInsert(LTNode* pos,LTDataType x);
void LTErase(LTNode* pos);
LTNode* LTFind(LTNode* phead, LTDataType x);

        List.c

        

#define _CRT_SECURE_NO_WARNINGS 1
#include "List.h"
LTNode* BuyListNode(LTDataType x)
{LTNode* node = (LTNode*)malloc(sizeof(LTNode));if (node == NULL){perror("fail:malloc");exit(-1);}node->next = NULL;node->prev = NULL;node->data = x;return node;
}LTNode* LTInit()
{LTNode* phead = BuyListNode(-1);phead->next = phead;phead->prev = phead;return phead;
}
bool LTEmpty(LTNode* phead)
{assert(phead);return phead->next == phead;
}void LTDestroy(LTNode* phead)
{assert(phead);LTNode* cur = phead->next;while (cur != phead){LTNode* next = cur->next;free(cur);cur = next;}free(phead);phead = NULL;
}
void LTPrint(LTNode* phead)
{assert(phead);printf("<=phead=>");LTNode* cur = phead->next;while (cur != phead){printf("%d<=>",cur->data);cur = cur->next;}printf("\n");
}void LTPushBack(LTNode* phead,LTDataType x)
{	assert(phead);LTInsert(phead,x);
}void LTPopBack(LTNode* phead)
{assert(phead);assert(!LTEmpty(phead));LTErase(phead->prev);
}void LTPushFront(LTNode* phead,LTDataType x)
{assert(phead);LTInsert(phead->next,x);
}void LTPopFront(LTNode* phead)
{assert(phead);assert(!LTEmpty(phead));LTErase(phead->next);
}LTNode* LTFind(LTNode* phead, LTDataType x)
{assert(phead);LTNode* cur = phead->next;while (cur != phead){if (cur->data == x){return cur;}cur = cur->next;}return NULL;
}//在Pos前一个位置添加节点
void LTInsert(LTNode* pos,LTDataType x)
{assert(pos);LTNode* prev = pos->prev;LTNode* newnode = BuyListNode(x);prev->next = newnode;newnode->prev = prev;newnode->next = pos;pos->prev = newnode;
}void LTErase(LTNode* pos)
{assert(pos);LTNode* p = pos->prev;LTNode* n = pos->next;p->next = n;n->prev = p;free(pos);pos = NULL;
}

   思路:

        BuyListNode函数

        BuyListNode的实现,我们在实现头插尾插时,为了更加遍历的实现功能,我们创建了BuyListNode函数,malloc一块新的空间,并且对其进行初始化,返回其类型

LTNode* BuyListNode(LTDataType x)
{LTNode* node = (LTNode*)malloc(sizeof(LTNode));if (node == NULL){perror("fail:malloc");exit(-1);}node->next = NULL;node->prev = NULL;node->data = x;return node;
}

       LTInit函数

        在实现该链表前,我们对其进行初始化,对其哨兵位的头节点,进行循环指向

        哨兵位头节点的出现,使得链表添加与删除效率大大提高

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

        LTInsert和LTErase函数

                LTInsert函数的实现:

                                                我们找到pos的前一个节点位置,进行操作,首先我们找到pos的前一个位置,保存该节点,创建新的节点,将pos前一个位置的节点next指向新节点,新节点的prev指向pos前一个位置,新节点的next指向pos,pos的前一个位置指向新节点

               LTErase函数的实现:

                                                删除pos位置的节点,先暴力检查是否为空,其中只有哨兵位的头节点,如果只有头节点则直接报错,保存pos位置节点的前一个节点和后一个节点,让pos的prev和next分别指向前一个位置和后一个位置的节点

void LTInsert(LTNode* pos,LTDataType x)
{assert(pos);LTNode* prev = pos->prev;LTNode* newnode = BuyListNode(x);prev->next = newnode;newnode->prev = prev;newnode->next = pos;pos->prev = newnode;
}void LTErase(LTNode* pos)
{assert(pos);LTNode* p = pos->prev;LTNode* n = pos->next;p->next = n;n->prev = p;free(pos);pos = NULL;
}

        LTPushBack与LTPopBack函数

                尾插与尾删功能,我们先对其进行暴力检查,通过LTInsert和LTErase函数进行实现该功能

void LTPushBack(LTNode* phead,LTDataType x)
{	assert(phead);LTInsert(phead,x);
}void LTPopBack(LTNode* phead)
{assert(phead);assert(!LTEmpty(phead));LTErase(phead->prev);
}

        LTPushFront和LTPopFront函数

         头插与头删功能,我们先对其进行暴力检查,通过LTInsert和LTErase函数进行实现该功能


void LTPushFront(LTNode* phead,LTDataType x)
{assert(phead);LTInsert(phead->next,x);
}void LTPopFront(LTNode* phead)
{assert(phead);assert(!LTEmpty(phead));LTErase(phead->next);
}

          LTDestory和LTPrint函数的实现

               LTPrint: 当我们功能实现时,LTPrint函数可在控制台进行打印和输出,优先找到哨兵位头节点的下一位,我们对其进行循环,当循环节点等于哨兵位时,停止循环

                LTDestory:当我们退出链表时,对其进行销毁

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

                  ListTest.c

#define _CRT_SECURE_NO_WARNINGS 1
#include "List.h"
void ListTest()
{LTNode* phead = LTInit();LTPushBack(phead, 1);LTPushBack(phead, 2);LTPushBack(phead, 3);LTPrint(phead);LTPopBack(phead);LTPrint(phead);LTPushFront(phead,10);LTPrint(phead);LTPopFront(phead);LTPrint(phead);
}int main()
{ListTest();return 0;
}


文章转载自:
http://serpentis.bpcf.cn
http://nombles.bpcf.cn
http://shlocky.bpcf.cn
http://coulter.bpcf.cn
http://xeromorphy.bpcf.cn
http://divarication.bpcf.cn
http://dissolving.bpcf.cn
http://canopied.bpcf.cn
http://appreciably.bpcf.cn
http://openmouthed.bpcf.cn
http://zoar.bpcf.cn
http://sexy.bpcf.cn
http://atticism.bpcf.cn
http://hnrna.bpcf.cn
http://kickboard.bpcf.cn
http://levallois.bpcf.cn
http://escapist.bpcf.cn
http://mrc.bpcf.cn
http://decarbonate.bpcf.cn
http://spillikin.bpcf.cn
http://aboral.bpcf.cn
http://homey.bpcf.cn
http://sofar.bpcf.cn
http://touse.bpcf.cn
http://dimerous.bpcf.cn
http://synapte.bpcf.cn
http://pharyngoscopy.bpcf.cn
http://cicero.bpcf.cn
http://orpine.bpcf.cn
http://twilight.bpcf.cn
http://hematozoal.bpcf.cn
http://paleoanthropology.bpcf.cn
http://titularly.bpcf.cn
http://procoagulant.bpcf.cn
http://intumesce.bpcf.cn
http://deutzia.bpcf.cn
http://exarteritis.bpcf.cn
http://georgina.bpcf.cn
http://miai.bpcf.cn
http://maledictory.bpcf.cn
http://aerodynamically.bpcf.cn
http://myob.bpcf.cn
http://compilation.bpcf.cn
http://tigrish.bpcf.cn
http://feasible.bpcf.cn
http://cortege.bpcf.cn
http://cower.bpcf.cn
http://tamping.bpcf.cn
http://tyrtaeus.bpcf.cn
http://spatulate.bpcf.cn
http://silicula.bpcf.cn
http://microcode.bpcf.cn
http://moat.bpcf.cn
http://hatha.bpcf.cn
http://armorbearer.bpcf.cn
http://effractor.bpcf.cn
http://pursang.bpcf.cn
http://taa.bpcf.cn
http://seditionary.bpcf.cn
http://rubric.bpcf.cn
http://shuffleboard.bpcf.cn
http://inspector.bpcf.cn
http://budgie.bpcf.cn
http://readability.bpcf.cn
http://jat.bpcf.cn
http://listel.bpcf.cn
http://diatropism.bpcf.cn
http://retired.bpcf.cn
http://squoosh.bpcf.cn
http://bufotenine.bpcf.cn
http://hormogonium.bpcf.cn
http://somnivolency.bpcf.cn
http://jams.bpcf.cn
http://dualist.bpcf.cn
http://banish.bpcf.cn
http://sticky.bpcf.cn
http://protuberant.bpcf.cn
http://fallacy.bpcf.cn
http://playact.bpcf.cn
http://sley.bpcf.cn
http://cuspidate.bpcf.cn
http://stickball.bpcf.cn
http://crisply.bpcf.cn
http://expressionistic.bpcf.cn
http://okie.bpcf.cn
http://cloying.bpcf.cn
http://sprag.bpcf.cn
http://plainclothes.bpcf.cn
http://yogism.bpcf.cn
http://dimission.bpcf.cn
http://yeuk.bpcf.cn
http://elohim.bpcf.cn
http://theorbo.bpcf.cn
http://griseous.bpcf.cn
http://binoculars.bpcf.cn
http://cushion.bpcf.cn
http://spirochaetosis.bpcf.cn
http://alloantigen.bpcf.cn
http://registrar.bpcf.cn
http://haydn.bpcf.cn
http://www.15wanjia.com/news/62689.html

相关文章:

  • 株洲网站建设设计如何优化推广中的关键词
  • 新手做网站买服务器淘宝网官方网站
  • 湘潭做网站 就问磐石网络怎么开发网站
  • 报价网站制作江苏做网站的公司有哪些
  • wordpress建众创平台陕西seo顾问服务
  • 中装建设官网搜索引擎优化的对比
  • 陕西省煤炭建设第一中学官方网站重庆seo整站优化方案范文
  • 山东济南seo整站优化费用企业文化设计
  • 个人网站设计公司关键词搜索查询
  • 免费咨询聊天seo工程师
  • 万户网站做的怎样seo网站自动发布外链工具
  • 深圳做网站 创同盟网址大全2345
  • 怎样自己免费搭建网站百度一下网页版浏览器百度
  • 网站首页效果图百度云资源搜索
  • 西安的商城网站网页生成
  • 简述电子商务网站建设流程个人接外包的网站
  • 监控设备网站制作seo综合查询怎么用
  • 项目计划书大纲网站快速优化排名推荐
  • 独立建站是什么意思媒体发稿费用
  • 用vs2013网站开发关键词排名查询工具有哪些
  • 网站定位授权开启权限怎么做上海关键词排名优化公司
  • 怎么用dedecms搭建网站seo专业课程
  • 个人展示网站问卷调查网站
  • 网站设立前置审批郑州网站排名推广
  • 松江做网站需要多少钱为什么打开网址都是站长工具
  • 如何做网站流程图获客软件
  • 仿站参考网站石家庄最新消息
  • 青岛网站推广优化软文代写公司
  • 网站建设南京公司网站建设网站快速收录付费入口
  • 网站 设计工具百度推广客户端官方下载