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

建设行业个人信息网站站长工具查询系统

建设行业个人信息网站,站长工具查询系统,学网站开发应该学什么软件,互联网下载一.实现单向链表的头插,头删,尾插,尾删,按位置插,按位置删,按位置修改,按元素查找,按元素修改,按元素删除,单链表的逆置,查找倒数第几个元素&…

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

头文件: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/325028.html

相关文章:

  • 微信公众号登陆平台hyein seo官网
  • 门户网站 移动端本站3天更换一次域名yw
  • 永久免费手机网站建设教程大数据营销推广精准粉
  • 高端品牌有哪些牌子北京网站优化推广公司
  • 我想建个网站网站服务器查询
  • 东莞松山湖中学网络优化基础知识
  • 在线做交互网站百度经验app下载
  • wordpress -editor入门seo技术教程
  • cdr平面设计教程seo教程免费
  • 国际著名平面设计作品seo引擎优化是什么
  • 网站建设管理做什么seo精华网站
  • 内蒙古住房和城乡建设厅网站 工程建设管理官网设计比较好看的网站
  • 互联网站点台州seo优化公司
  • 英文建站系统seo云优化平台
  • 网站建设企业实践总结网站营销推广
  • 网站做下载页面百度商家平台
  • 成品网站源码1688版本号金华关键词优化平台
  • 网站开发哪种语言更安全百度权重1
  • 东莞网站建设是什么意思百度推广一年大概多少钱
  • php网站做cdn域名交易
  • 第3章营销型企业网站建设怎么把网站排名到百度前三名
  • 编程教育机构seo课程培训要多少钱
  • 郑州网站设计公司互联网营销培训
  • 有中文网站 怎么做英文网站网站设计公司哪家专业
  • qq靓号申请免费网站怎么自己注册网站
  • 手机游戏开发需要学什么上海抖音seo
  • 对一个网站做性能测试seo优化常识
  • 谷歌网站开发用什么框架互联网营销师培训
  • 金融行业网站制作百度公司招聘官网
  • 网站推荐正能量目前主流搜索引擎是哪种