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

网站宣传活动怎么做免费虚拟机

网站宣传活动怎么做,免费虚拟机,天津网站建设 熊掌号,wordpress怎么优化进程单向链表的创建单向链表的插入单向链表的删除及清空单向链表的修改单向链表的查找单向链表的逆序 一、单向链表的创建 LinkList *CreateLinkList() {LinkList *ll malloc(sizeof(LinkList));if (NULL ll) {fprintf(stderr, "CreateLink malloc");return NULL;}ll…
  • 单向链表的创建
  • 单向链表的插入
  • 单向链表的删除及清空
  • 单向链表的修改
  • 单向链表的查找
  • 单向链表的逆序

一、单向链表的创建

LinkList *CreateLinkList() {LinkList *ll = malloc(sizeof(LinkList));if (NULL == ll) {fprintf(stderr, "CreateLink malloc");return NULL;}ll->head = NULL;ll->clen = 0;return ll;
}

判断链表是否为空:

int IsEmptyLinkList(LinkList *ll)
{return 0 == ll->clen;
}

获取链表长度:

int GetSizeLinkList(LinkList *ll)
{return ll->clen;
}

遍历链表并输出:

int ShowLinkList(LinkList *ll)
{LinkNode *tmp = ll->head;int len = GetSizeLinkList(ll);int i ;for(i = 0 ; i < len ; ++i){printf("%s %c %d %d\n",tmp->data.name,tmp->data.sex,tmp->data.age,tmp->data.score);tmp = tmp->next;}return 0;
}

二、单向链表的插入

1.头插法:

int InsertHeadLinkList(LinkList *ll, DATATYPE *data)
{LinkNode *newnode = malloc(sizeof(LinkNode));if (NULL == newnode) {fprintf(stderr, "InsertHeadLinkList malloc");return 1;}memcpy(&newnode->data,data,sizeof(DATATYPE));//memcpy(&newnode->data,data,sizeof(DATATYPE));newnode->next = NULL;if(IsEmptyLinkList(ll)){ll->head = newnode;}else{newnode->next = ll->head;ll->head = newnode;}ll->clen++;return 0;
}

2.尾插法:

int InsertTailLinkList(LinkList *ll, DATATYPE *data)
{if(IsEmptyLinkList(ll)){return InsertHeadLinkList(ll,data);}else{LinkNode *newnode = malloc(sizeof(LinkNode));if (NULL == newnode) {fprintf(stderr, "InsertTailLinkList malloc");return 1;}memcpy(&newnode->data,data,sizeof(DATATYPE));//memcpy(&newnode->data,data,sizeof(DATATYPE));newnode->next = NULL;LinkNode *tmp1 = ll->head;while(tmp1->next){tmp1 = tmp1->next;}tmp1->next = newnode;ll->clen++;}return 0;
}

3.指定位置插入(重点掌握)

int InsertPosLinkList(LinkList *ll, DATATYPE *data, int pos)
{int len = GetSizeLinkList(ll);if(pos < 0 || pos > len){return 1;}if(0 == pos){return InsertHeadLinkList(ll, data); //cha ru 1 ge jie dian malloc 2 ci hui xie lou nei cun}else if(len == pos){return InsertTailLinkList(ll, data);}else{LinkNode *newnode = malloc(sizeof(LinkNode));if (NULL == newnode) {fprintf(stderr, "InsertPosLinkList malloc");return 1;}memcpy(&newnode->data,data,sizeof(DATATYPE));newnode->next = NULL;int i = 0;LinkNode *tmp = ll->head;while(tmp->next){++i;if(i == pos){newnode->next = tmp->next;tmp->next = newnode;break;}tmp = tmp->next;}ll->clen++;}return 0;
}

三、单向链表的删除及清空

1.单向链表的删除(指定名字对应的结点)

int DeleteLinkList(LinkList *ll,char *name)
{LinkNode *tmp = ll->head;if(IsEmptyLinkList(ll)){return 1;}if(0 == strcmp(tmp->data.name,name)){ll->head = ll->head->next;free(tmp);ll->clen--;return 0;}while(tmp->next){if (0 == strcmp(tmp->next->data.name,name)){LinkNode *tmp2 = tmp->next;tmp->next = tmp->next->next;free(tmp2);ll->clen--;return 0;}tmp = tmp->next;}return 1;
}

2.单向链表的清空:

int DestroyLinkList(LinkList **ll)
{LinkNode *tmp = (*ll)->head;while(tmp){if(NULL == tmp){break;}(*ll)->head = (*ll)->head->next;free(tmp);tmp = (*ll)->head;}free(*ll);*ll = NULL;return 0;
}

四、单向链表的修改

int ModifyLinkList(LinkList *ll,char *name,DATATYPE *data)
{DATATYPE *tmp = FindLinkList(ll,name);if(NULL == tmp){return 1;}memcpy(tmp, data, sizeof(DATATYPE));return 0;
}

五、单向链表的查找

1.查找指定姓名的数据域

DATATYPE *FindLinkList(LinkList *ll,char *name)
{LinkNode *tmp = ll->head;while(tmp){if(0 == strcmp(tmp->data.name,name)){return &tmp->data;}tmp = tmp->next;}return NULL;
}

2.查找链表的中间结点位置

LinkNode *Findmiddleofpoint(LinkList *ll)
{LinkNode *slow = ll->head;LinkNode *fast = ll->head;while(fast){fast = fast->next;if(fast == NULL ){break;}slow = slow->next;fast = fast->next;}return slow;
}

3.查找链表中倒数第k个结点位置

LinkNode *Findlastofpoint(LinkList *ll, int k)
{if(IsEmptyLinkList(ll)){return NULL;}if(k > ll->clen || k <= 0){return NULL;}LinkNode *slow = ll->head;LinkNode *fast = ll->head;int i;for (i = 0; i < k;++i){fast = fast->next;}while(fast){fast = fast->next;slow = slow->next;}return slow;
}

六、单向链表的逆序

int InverseLinkList(LinkList *ll)
{if(IsEmptyLinkList(ll)){return 1;}int len = GetSizeLinkList(ll);if( 1 == len){return 0;}LinkNode *prev = NULL;LinkNode *tmp = ll->head;LinkNode *next = ll->head->next;while(1){tmp->next = prev;prev = tmp;tmp = next;if(NULL == tmp){break;}next = next->next;}ll->head = prev;return 0;
}

总结:

        单向链表的优点:插入和删除的时间复杂度为O(1),优于顺序表。且在空间性能上不需要预先分配,大小可变,能够动态分配满足要求。

        单向链表的缺点:查找的时间复杂度为O(n)。


文章转载自:

http://hbuwl2vn.pjfwr.cn
http://bp3IpI6f.pjfwr.cn
http://w4Z75CpP.pjfwr.cn
http://gVQ27orZ.pjfwr.cn
http://Kuna9SpZ.pjfwr.cn
http://2s61cC5I.pjfwr.cn
http://jzWjx3PO.pjfwr.cn
http://D5hMVj4H.pjfwr.cn
http://TaGFDmZ9.pjfwr.cn
http://hXm8rHW9.pjfwr.cn
http://VIAE5XBb.pjfwr.cn
http://2CbdWhCL.pjfwr.cn
http://UeQBkiQJ.pjfwr.cn
http://RfZn04Vx.pjfwr.cn
http://OjS3D5mU.pjfwr.cn
http://ejgWrqVa.pjfwr.cn
http://mC4xasiW.pjfwr.cn
http://AoTnrLri.pjfwr.cn
http://U9iC8A4w.pjfwr.cn
http://trv4ITba.pjfwr.cn
http://ThNwkqOA.pjfwr.cn
http://Nv0SF0MB.pjfwr.cn
http://ybSRj2YD.pjfwr.cn
http://lHVMHC6c.pjfwr.cn
http://tisQvc2V.pjfwr.cn
http://ZaAU9l6v.pjfwr.cn
http://Mv0JLcfJ.pjfwr.cn
http://3jDilOZH.pjfwr.cn
http://s9I5uJc6.pjfwr.cn
http://DMdF2gP8.pjfwr.cn
http://www.dtcms.com/wzjs/773346.html

相关文章:

  • 小学学校网站wordpress flv
  • 网站模板 psd1万流量网站 服务器配置
  • 做响应式网站一般都用哪些框架重庆建设行业信息网站
  • 邢台做网站推广费用开一家广告公司需要多少钱
  • 建设行业网站大概需要都少钱网站设计与制作说明书
  • 站长工具网站提交濮阳做网站的公司有哪些
  • 网站80端口备案北辰网站建设
  • 凡科网建站模板手机软件应用市场
  • 织梦商城网站模板免费下载湖南网站建设设计
  • 重庆价格低建设网站公司网上买保险有哪些平台
  • 云主机 怎么做网站怎么自己制作网页
  • 提供信息门户网站搭建海口网站建设网站制作
  • 灵璧有做公司网站的吗兰州落地防疫
  • 商洛做网站注册公司需要提供的资料及公司注册流程
  • 赤峰市做网站建设的公司杭州建设工程招投标
  • 郑州做网站首选九零后网络网页详情页设计
  • 网站后台帐号密码破解vi设计手册模板ppt
  • 上海好的网站设计公司有哪些wordpress科技网站模板
  • 阿里云网站怎么做自己做的网站被封了
  • 简易网站做广告公司网站建设
  • 厦门制作网站企业网站开发会议议程范文
  • 专业网站设计哪家好推荐友情链接
  • 做网站需要备案吗2016年做水果行业专业网站
  • 网站怎么建设在哪里接单免费做图网站有哪些
  • 宁波工商注册咨询电话站长工具seo综合查询隐私查询导航
  • 湖南响应式网站哪家好莱芜双休女工招聘信息
  • 特殊教育学校网站建设方案深圳网站建设小江
  • 大型网站设计首页实例济南网站优化哪里做的好
  • 农业公司网站建设免费seo快速排名工具
  • 电脑网站建设服务器北京网站开发人员