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

网站建设嗟商文件网站建设站点地图

网站建设嗟商文件,网站建设站点地图,网站开发安全性分析,沈阳网站建设培训班一.实现单向链表的头插,头删,尾插,尾删,按位置插,按位置删,按位置修改,按元素查找,按元素修改,按元素删除,单链表的逆置,查找倒数第几个元素&…

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

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

相关文章:

  • 网站建设情况报告范文2023最建议买三款手机
  • 免费的企业黄页网站合肥网站建设公司哪家好
  • 网站建设服务的风险长沙做网站好的公司
  • 石家庄市住房城乡建设局网站什么是域名解析服务
  • 潮州市网站建设公司网店推广实训总结
  • 网站建设汇报稿刷百度指数
  • 苏州网站建设培训学校手表网站哪家好
  • 网站架构技术帮人做网站收多少钱
  • 海兴做网站可以免费做会计题的网站
  • 做淘宝客网站要不要备案西部数码做跳转网站
  • 乐清市建设规划局网站建设公司网站广告语
  • 徐州微信网站建设营销型网站建设 上海
  • 本地镇江网站建设win7自建网站
  • 做网站还有希望吗做网站对客户有什么帮助
  • 怎么自己网站搜不到了网站建设书籍下载
  • 合肥网站开发公司电话天津画册设计公司
  • 做电影网站要怎么样的主机做学校网站用什么模版
  • 大型网站搜索怎么做的手机网站改版公司
  • 备案期间网站如何访问国家建筑网站
  • 贾汪区住房和城乡建设局网站张家港网站 设计制作
  • WordPress多站点同步设置合肥网站开发 合肥网站优化
  • 徐州建设网站价格百度短链接
  • 网站开发外包费用的会计分录动漫新闻资讯站
  • 怎么做淘宝客采集网站哪个公司做网站好
  • 台州网站排名公司平面设计实例网站
  • 网站被挂马怎么办门户网站视频
  • 网站开发设计培训成都网站建设优点
  • 网站打开是别人的做时彩网站违法吗
  • 网站右下角调用优酷视频广告代码wordpress调用置顶文章
  • wordpress的官方网站低内存vps搭建WordPress