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

武冈网站建设多少钱优化大师app下载安装

武冈网站建设多少钱,优化大师app下载安装,温州网页网站制作,特种作业证查询入口一.实现单向链表的头插,头删,尾插,尾删,按位置插,按位置删,按位置修改,按元素查找,按元素修改,按元素删除,单链表的逆置,查找倒数第几个元素&…

一.实现单向链表的头插,头删,尾插,尾删,按位置插,按位置删,按位置修改,按元素查找,按元素修改,按元素删除,单链表的逆置,查找倒数第几个元素,释放内存。

头文件:head.h

 #ifndef __HEAD_H__                                                         #define __HEAD_H__                                                         #include <stdio.h>                                                         #include <string.h>                                                        #include <stdlib.h>                                                        typedef int datatype;                                                      enum passble{success,false=-1};                                            typedef struct Node                                                        {                                                                          datatype data;                                                         struct Node* next;                                                     }*Linklist;                                                                Linklist Create_Node();                                                    Linklist head_insert(Linklist head,datatype element);                      void show(Linklist head);                                                  Linklist head_delete(Linklist head);                                       Linklist tail_insert(Linklist head,datatype element);                      Linklist tail_delete(Linklist head);                                       int getlen(Linklist head);                                                 Linklist pos_insert(Linklist head,int pos,datatype element);               Linklist delete_index(Linklist head,int pos);                              Linklist change_index(Linklist head,int pos,datatype element);             int find_index(Linklist head,int pos);                                     int value(Linklist head,datatype element);                                 Linklist change_value(Linklist head,datatype element,datatype data1);      Linklist delete_value(Linklist head,datatype element);                     int find_value(Linklist head,int pos);                                     Linklist swap(Linklist head);                                              void free_list(Linklist head);                                             #endif                                                                     

测试文件(test.c)

#include"head.h"//创建节点
Linklist Create_Node()
{Linklist s=(Linklist)malloc(sizeof(struct Node));if(NULL==s)return NULL;s->data=0;s->next=NULL;return s;
}
//头插
Linklist head_insert(Linklist head,datatype element)
{Linklist s=Create_Node();s->data=element;if(NULL==head)head=s;else{s->next=head;head=s;}return head;
}//头删
Linklist head_delete(Linklist head)
{if(NULL==head)return NULL;Linklist p=head;head=head->next;free(p);p=NULL;return head;
}//尾插
Linklist tail_insert(Linklist head,datatype element)
{Linklist s=Create_Node();s->data=element;if(NULL==head){head=s;}{Linklist p=head;while(p->next){p=p->next;}p->next=s;}return head;
}//尾删
Linklist tail_delete(Linklist head)
{if(NULL==head)return NULL;else if(head->next==NULL){free(head);head=NULL;}else{Linklist p=head;while(p->next->next!=NULL){p=p->next;}free(p->next);p->next=NULL;}return head;
}//计算链表的长度
int getlen(Linklist head)
{int count=0;Linklist p=head;while(p){count++;p=p->next;}return count;
}//按位置插入值
Linklist pos_insert(Linklist head,int pos,datatype element)
{Linklist s=Create_Node();s->data=element;Linklist p=head;if(pos<1||pos>getlen(head)+1)return head;if(pos==1){head=head_insert(head,element);return head;}for(int i=1;i<pos-1;i++){p=p->next;}s->next=p->next;p->next=s;return head;
}//按位置删除
Linklist delete_index(Linklist head,int pos)
{if(pos<1||pos>getlen(head))return head;if(pos==1){head=head_delete(head);return head;}Linklist p=head;for(int i=1;i<pos-1;i++){p=p->next;}Linklist del=p->next;p->next=del->next;free(del);del=NULL;return head;
}//按位置修改
Linklist change_index(Linklist head,int pos,datatype element)
{//判断修改的位置是否合法if(pos<1||pos>getlen(head)){return head;}Linklist p=head;for(int i=1;i<pos;i++){p=p->next;}p->data=element;return head;}//按位置查找返回值
int find_index(Linklist head,int pos)
{if(NULL==head)return 0;if(pos<1||pos>getlen(head)){return 1 ;}Linklist p=head;for(int i=1;i<pos;i++){p=p->next;}return p->data;
}//按值查找返回位置
int value(Linklist head,datatype element)
{if(NULL==head)return 0;Linklist p=head;for(int i=1;i<=getlen(head);i++){if(p->data==element){return i;}p=p->next;}return 0;
}//按值修改
Linklist change_value(Linklist head,datatype element,datatype data1)
{int j=value(head,element);head=change_index(head,j,data1);return head;
}//按值删除
Linklist delete_value(Linklist head,datatype element)
{int j=value(head,element);head=delete_index(head,j);return head;
}//查找倒数第几个元素的值
int find_value(Linklist head,int pos)
{if(NULL==head)return 0;if(pos<1||pos>getlen(head))return 1;Linklist p=head;Linklist q=head;for(int i=1;i<pos;i++){p=p->next;}while(p->next){p=p->next;q=q->next;}return q->data;
}//单链表的逆置
Linklist swap(Linklist head)
{if(NULL==head)return head;if(getlen(head)==1)return head;Linklist p=head->next;head->next=NULL;while(p){Linklist s=p;p=p->next;s->next=head;head=s;}return head;
}//释放内存
void free_list(Linklist head)
{Linklist s=head;while(s){s=s->next;head=head_delete(head);}return ;
}//输出
void show(Linklist head)
{if(NULL==head){return;}Linklist p=head;while(p!=NULL){printf("%d\t",p->data);p=p->next;}putchar(10);
}

主文件(main.c)

#include"head.h"
int main(int argc, const char *argv[])
{//头插Linklist head=NULL;int n;datatype element;printf("请输入头插要插入几个数据:");scanf("%d",&n);for(int i=0;i<n;i++){printf("请输入头插插入的数据:");scanf("%d",&element);head=head_insert(head,element);}head=head_delete(head);      //头删show(head);//尾插printf("请输入尾插要插入几个数据:");scanf("%d",&n);for(int i=0;i<n;i++){printf("请输入尾插插入的数据:");scanf("%d",&element);head=tail_insert(head,element);}head=tail_delete(head);       //尾删show(head);int pos;                     //任意位置插printf("请输入要插入数据的位置:");scanf("%d",&pos);printf("请输入插入的数据:");scanf("%d",&element);head=pos_insert(head,pos,element);show(head);/*								//任意位置删printf("请输入要删除数据的位置:");scanf("%d",&pos);head=delete_index(head,pos);show(head);//任意位置修改printf("请输入要修改数据的位置:");scanf("%d",&pos);printf("请输入修改后的值:");scanf("%d",&element);head=change_index(head,pos,element);show(head);//按位置查找printf("请输入要查找的位置:");scanf("%d",&pos);datatype data=find_index(head,pos);if(data==0){printf("链表为空\n");}else if(data==1){printf("输入不合理\n");}else{printf("查找位置的值为:%d\n",data);}//按值查找返回位置printf("请输入要查找的值:");scanf("%d",&element);pos=value(head,element);if(pos==0){printf("没有这个元素\n");}else{printf("要查找的值的位置为:%d\n",pos);}//按值修改datatype data1;//修改后的值printf("请输入要修改的元素:");scanf("%d",&element);printf("请输入修改后的值:");scanf("%d",&data1);head=change_value(head,element,data1);show(head);
*///按值删除printf("请输入要删除的元素:");scanf("%d",&element);head=delete_value(head,element);show(head);//查找倒数第几个元素的值printf("请输入倒数的位置:");scanf("%d",&pos);int k=find_value(head,pos);if(k==0){printf("链表不存在");}else if(k==1){printf("输入的位置不合理");}else{printf("%d\n",k);}//单链表的逆置head=swap(head);printf("链表逆置后的结果为:\n");show(head);//释放内存free_list(head);return 0;
}

运行结果:

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

相关文章:

  • 达州纪委党风廉政建设网站网络推广平台哪家公司最好
  • wordpress时间线宁海关键词优化怎么优化
  • 深圳罗湖区网站西安网络推广外包公司
  • wordpress 手机支付广州seo顾问服务
  • flashcs6网站建设网页版百度云
  • 皇马logo做网站百度推广售后服务电话
  • 做网站要用到数据库吗宁波seo推广服务电话
  • 做网站公违法嘛网站推广的营销策划方案
  • 广东做淘宝的都在哪里网站seo网络推广是什么意思
  • 所有爱做网站如何搜索网页关键词
  • 成功的营销型网站案例搜索百度app下载
  • 甘洛网站建设怎样在百度上宣传自己的产品
  • 互联网小白怎么入门企业网站优化外包
  • 网站建设详细报价百度收录工具
  • 设计的网站源代码怎么做免费自助建站网站
  • 网站推广属于什么行业湖南网站设计外包费用
  • 自动网站建设系统cms爱站网关键词挖掘工具熊猫
  • 公司网站icp备案网络营销方案设计毕业设计
  • 建设网站的意义 作用许昌seo公司
  • 湖南网站推广电话西安seo公司
  • 网站建设设计在哪里打广告效果最好
  • wordpress分类目录url没斜杠湖南正规关键词优化
  • wordpress制作小说网站模板下载百度推广登录平台怎么收费
  • 企业网站二级域名好做吗百度图片查找
  • 小智logo在线制作河南整站关键词排名优化软件
  • 宁波做企业网站公司北京整站线上推广优化
  • dede网站qq类源码国外网站搭建
  • 网站建设制作 武汉企业网站设计的基本内容包括哪些
  • 深圳网站制作长沙seo顾问
  • 情侣博客网站模板下载全网品牌推广公司