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

企业网站设计思路百度网站提交

企业网站设计思路,百度网站提交,网站风格对比信息表,浙江城乡与住房建设部网站循环链表简单的来说,就是将原来单链表中最有一个元素的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/176500.html

相关文章:

  • 做网站的经费西安楼市最新房价
  • 新昌做网站百度做广告费用
  • 企业站群系统长沙正规关键词优化价格从优
  • 扬州做网站公司有哪些b2b平台都有哪些网站
  • 杭州互联网企业有哪些优化大师win10
  • 找人做网站靠谱吗泰州seo推广公司
  • 上海制作网站公司网络推广软件哪个好
  • 网站制作学什么网络营销策划论文
  • 做同城购物网站排名优化外包公司
  • 外网进入学校内局域网建设的网站成都百度推广排名优化
  • 外国域名注册很多网站昆明seo技术培训
  • 做演示的网站网站管理和维护的主要工作有哪些
  • 公司的网站都是谁在维护无锡seo优化公司
  • 深圳公司设立泉州seo优化
  • 外贸网站建设流程广州引流推广公司
  • 沈阳做网站的公司nba排名
  • 做短视频网站需要审批做网站需要多少钱
  • 淘宝客网站如何做推广方案全球搜怎么样
  • php网站源代码修改互联网网络推广公司
  • 做网站霸屏公司销售好做吗随州今日头条新闻
  • 网站导航三角怎么做北京培训学校
  • 网站建设的落地页如何做网站seo
  • 酒店类网站建设开发书汕头seo计费管理
  • 家居网站建设公司排名北京seo排名公司
  • 可发外链的高权重网站搜索引擎分类
  • 网站做5级分销合法吗广州网站建设工作室
  • 广州网站建设网络网络营销中心
  • 网站优化公司免费咨询湘潭关键词优化公司
  • 做电商网站需要注册什么公司ip域名查询网
  • 网页设计成品网站新媒体营销六种方式