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

网站页面类型百度的总部在哪里

网站页面类型,百度的总部在哪里,郑州快速网站优化公司首选,成都网站建设 seo循环链表简单的来说,就是将原来单链表中最有一个元素的next指针指向第一个元素或头结点,链表就成了一个环,头尾相连,就成了循环链表——circultlar linker list。注意非空表,和空表。多数会加入头结点。 原来结束的条件…

循环链表
简单的来说,就是将原来单链表中最有一个元素的next指针指向第一个元素或头结点,链表就成了一个环,头尾相连,就成了循环链表——circultlar linker list。

注意非空表,和空表。多数会加入头结点。
原来结束的条件是:
p->next != NULL ——> p-next != Head 

我们再结合单向链表的结构,则可得到更加实用的双向链表——double link list。

其基本框架的搭建:

#include "DouLink.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>//创建双向链表
DouLinkList *CreateDouLinkList()
{DouLinkList *dl = malloc(sizeof(DouLinkList));if (NULL == dl){fprintf(stderr, "CreateDouLinkList malloc\n");return NULL;}dl->head = NULL;dl->clen = 0;return dl;
}//检查是否为空
int IsEmpytDouLinkList(DouLinkList *dl)
{return 0 == dl->clen;
}//打印
int ShowDouLinkList(DouLinkList *dl, SHOW_DIR dir)
{int size = GetSizeDouLinkList(dl);DouLinkNode *tmp = dl->head;if (DIR_FORWARD == dir){for (int i = 0; i < size; i++){printf("name:%s sex:%c age:%d score:%d\n", tmp->data.name, tmp->data.sex,tmp->data.age, tmp->data.score);tmp = tmp->next;}}else{while (tmp->next){tmp = tmp->next;}for (int i = 0; i < size; i++){printf("name:%s sex:%c age:%d score:%d\n", tmp->data.name, tmp->data.sex,tmp->data.age, tmp->data.score);tmp = tmp->prev;}}
}//有效元素个数
int GetSizeDouLinkList(DouLinkList *dl)
{return dl->clen;
}//释放内存
int DestroyDouLinkList(DouLinkList *dl)
{DouLinkNode *tmp = dl->head;int size = GetSizeDouLinkList(dl);for (int i = 0; i < size; i++){tmp = dl->head;dl->head = dl->head->next;free(tmp);}free(dl);return 0;
}

然后是双向链表的操作(增、删、改、查):

//头插
int InsertHeadDouLinkList(DouLinkList *dl, DATATYPE *data)
{DouLinkNode *newnode = malloc(sizeof(DouLinkNode));if (NULL == newnode){fprintf(stderr, "InsertHeadDouLinkList malloc\n");return 1;}memcpy(&newnode->data, data, sizeof(DATATYPE));newnode->next = NULL;newnode->prev = NULL;if (IsEmpytDouLinkList(dl)){dl->head = newnode;}else{newnode->next = dl->head;dl->head->prev = newnode;dl->head = newnode;}dl->clen++;return 0;
}//尾插
int InsertTailDouLinkList(DouLinkList *dl, DATATYPE *data)
{if (IsEmpytDouLinkList(dl)){return InsertHeadDouLinkList(dl, data);}DouLinkNode *newnode = malloc(sizeof(DouLinkNode));if (NULL == newnode){fprintf(stderr, "InsertTailDouLinkList malloc\n");return 1;}memcpy(&newnode->data, data, sizeof(DATATYPE));newnode->next = NULL;newnode->prev = NULL;DouLinkNode *tmp = dl->head;while (tmp->next){tmp = tmp->next;}// init_nodenewnode->prev = tmp;tmp->next = newnode;dl->clen++;return 0;
}//按位置插入
int InsertPosDouLinkList(DouLinkList *dl, DATATYPE *data, int pos)
{int size = GetSizeDouLinkList(dl);if (pos < 0 || pos > size){return 1;}if (0 == pos)  // head{return InsertHeadDouLinkList(dl, data);}else if (pos == size)  // tail{return InsertTailDouLinkList(dl, data);}else  // mid{DouLinkNode *tmp = dl->head;for (int i = 0; i < pos - 1; i++){tmp = tmp->next;}// tmp at end node// init_node; malloc ,NULL,NULLDouLinkNode *newnode = malloc(sizeof(DouLinkNode));if (NULL == newnode){fprintf(stderr, "InsertTailDouLinkList malloc\n");return 1;}memcpy(&newnode->data, data, sizeof(DATATYPE));newnode->next = NULL;newnode->prev = NULL;newnode->next = tmp->next;newnode->prev = tmp;newnode->next->prev = newnode;tmp->next = newnode;dl->clen++;}return 0;
}//删除
int DeleteDouLinkList(DouLinkList *dl, char *name)
{DouLinkNode *tmp = FindDouLinkList(dl, name);if (NULL == tmp){printf("DeleteDouLinkList error\n");return 1;}if (tmp == dl->head){dl->head = dl->head->next;if (dl->head->prev){dl->head->prev = NULL;}}else  // mid end{if (tmp->next){tmp->next->prev = tmp->prev;}tmp->prev->next = tmp->next;}free(tmp);dl->clen--;return 0;
}//修改
int ModifyDouLinkList(DouLinkList *dl, char *name, DATATYPE *data)
{DouLinkNode *tmp = FindDouLinkList(dl, name);if (NULL == tmp){printf("modify failure...\n");return 1;}memcpy(&tmp->data, data, sizeof(DATATYPE));return 0;
}//查找
DouLinkNode *FindDouLinkList(DouLinkList *dl, char *name)
{DouLinkNode *tmp = dl->head;while (tmp){if (0 == strcmp(tmp->data.name, name)){return tmp;}tmp = tmp->next;}return NULL;
}




http://www.dtcms.com/wzjs/323554.html

相关文章:

  • 宁波企业做网站北京网络推广优化公司
  • 有没有专门做一件代发的网站网址提交百度
  • 泰安网站建设公司哪家好网址怎么注册
  • 如何用手机建网站搜外友链平台
  • 网络教育室内设计专业seo自学网官方
  • 如何在阿里巴巴建设网站seo公司外包
  • 物流公司会计好做吗安徽seo优化
  • asp 做网站的缺点营销成功的案例
  • win8网站模板有必要买优化大师会员吗
  • 如何利用网站模板做网站许昌seo公司
  • 北京网站建设项目企点qq
  • 360安全网址百度搜索优化关键词排名
  • 免费效果图网站软文有哪几种类型
  • 做网站需要注意什么十种营销方式
  • 中为网站建设2020十大网络热词
  • 怎么做视频网站赚钱吗网络营销app有哪些
  • 哪家网站专做女性服装网站媒体推广
  • 做网站编辑应该注意什么宁德市委书记
  • 什么网站可以做设计兼职搜索引擎收录提交入口
  • python做网站吗掌门一对一辅导官网
  • 合肥网站建设设计中文搜索引擎
  • 申请做网站 论坛版主网站优化公司哪个好
  • 请简述网站建设的一般流程百度地址如何设置门店地址
  • 做网站成都品牌宣传策划方案
  • 游戏网站做关键字我的百度账号
  • 福州专业网站建设公司网络营销价格策略有哪些
  • 吉林省四平市网站建设成都达洱狐网络科技有限公司
  • 淘客网站建设视频英文seo是什么意思
  • 昆山玉山网站建设推广普通话宣传周
  • 域名后缀一览表百度自动优化