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

企业信用信息公示系统广西上海搜索引擎优化公司

企业信用信息公示系统广西,上海搜索引擎优化公司,wordpress 教学培训,弹幕网站制作问题: 单链表带头结点的创建以及输出,以及带与不带头节点的区别 思路: 单链表,逻辑上是线性结构,由许多单链表结点,串成一串。其单链表结构体中,数据项由data数据域和结点指针域。带头节点是为…

问题:

        单链表带头结点的创建以及输出,以及带与不带头节点的区别

思路:

  1. 单链表,逻辑上是线性结构,由许多单链表结点,串成一串。其单链表结构体中,数据项由data数据域和结点指针域。
  2. 带头节点是为了使在空表时的操作更统一。如果不带头节点,空表插入时,直接让头指针,和第一节点指针相等即可。而非空表插入时,则时s->next=l->next;l->next=s;头插,两个操作。而带上头节点,所有情况下的插入操作,都同意了即都为s->next=l->next;l->next=s。
  3. 值得注意的是,带头节点的单链表,遍历输出时,记得从第二哥结点开始遍历,即让结点指针=头指针的指针域。即snode*s =l->next;
  4. 在指针改变实际值时,C语言中,要么来哥双指针,要么正常一维指针,最后返回头指针,主函数内接收即可。我觉得为了好理解,就用返回这个吧,整那么花里胡哨,也挺乱的。嗯

头插法:

//创建带头节点的单链表
snode* sheadlist(linklist l,int n)
{snode *phead=l;      phead=(snode*)malloc(sizeof(snode));//创建头节点 phead->next=NULL;  int i=0,x=n,k=0;printf("请输入想要插入的值\n");for(i=0;i<x;i++){printf("输入第%d个值\n",i+1);scanf("%d",&k);snode *p=(snode*)malloc(sizeof(snode));p->data=k;p->next=phead->next;phead->next=p;}return phead;
} 

尾插法:

//创建带头结点尾插法 
linklist srearlist(linklist l,int x)
{snode* phead=l;//创建头节点phead=(linklist)malloc(sizeof(snode));//用头结点创造空间,指针l没有创建,因此返回的时候返回头节点 才能获取整个单链表地址 phead->next=NULL;int i,k;snode *end=phead;//工作指针,从头节点开始工作 printf("请输入值\n");for(i=0;i<x;i++){scanf("%d",&k);snode *p=(snode*)malloc(sizeof(snode));//创建新结点,用来尾插进单链表 p->data=k;end->next=p;//直接给新结点连接起来 end=p;      //因为尾插,所以要时刻知道最后一个结点的位置,因此s指针也跑到新加入的结点p上面. }end->next=NULL;	return phead;//头节点始终指向整个单链表,因此返回头节点地址,用来获取整个字符串 
} 

按位查找,返回结点:

//返回第i个结点指针
snode* Searchnode(snode* phead,int i)
{int count=1;//从有序数据,数组第一个开始计算snode* p=phead->next;if(i==0) return phead;//返回头节点if(i<0) return NULL;  //无效值while(p!=NULL && count != i)  //进行遍历,每一次进行比对,每次遍历指针后移{p=p->next;count++;}return p;	
} 

按值查找,返回位置:(根据不同的情况需求在while判断条件那里改变条件,进而求得想要的位置即可)

//按值查找,查找比x大的,并返回应插入的位置 
int Search_zhinode(snode* phead,int x)
{snode* p=phead->next;int count=1;while(x>p->data){p=p->next;count++;}return count;	
} 

在某个位置插入一个结点:(按位查找的妙用:

(用按位查找找到第i-1个结点,通过这个结点,进行操作))

//在某个位置插入一个结点 
snode* SInsert(snode* phead,int pos,int x)
{if(pos<1 || pos>SLength(phead)) return NULL;//进行插入操作snode* p=(snode*)malloc(sizeof(snode));p->data=x;//获取第pos-1个位置上的结点,在它后面插入 snode* ppre=Search_weinode(phead,pos-1);p->next=ppre->next;ppre->next=p;return phead;
}

计算带头结点单链表长度:

//计算单链表长度
int SLenth(snode* phead)
{if(phead==NULL) return 0;int count=1;snode* p =phead->next;//从有效数据第一个开始 while(p->next!=NULL){p=p->next;count++;}return count;} 

删除第i个结点:(用按位查找找到第i-1个结点,通过这个结点,进行操作)

//删除第i个结点 
snode* SDelete(snode* phead,int i,int *x)
{if(i<1 || i>SLenth(phead)) return NULL;snode* p =Search_weinode(phead,i-1);snode* q=p->next;*x=q->data;p->next=q->next;free(q);return phead;
}


 

代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//创建带头结点单链表 
typedef struct snode
{int data;struct snode *next;
}snode,*linklist;
//创建带头节点的单链表
snode* sheadlist(linklist l,int n)
{snode *phead=l;      phead=(snode*)malloc(sizeof(snode));//创建头节点 phead->next=NULL;  int i=0,x=n,k=0;printf("请输入想要插入的值\n");for(i=0;i<x;i++){printf("输入第%d个值\n",i+1);scanf("%d",&k);snode *p=(snode*)malloc(sizeof(snode));p->data=k;p->next=phead->next;phead->next=p;}return phead;
} //创建带头结点尾插法 
linklist srearlist(linklist l,int x)
{snode* phead=l;//创建头节点phead=(linklist)malloc(sizeof(snode));//用头结点创造空间,指针l没有创建,因此返回的时候返回头节点 才能获取整个单链表地址 phead->next=NULL;int i,k;snode *end=phead;//工作指针,从头节点开始工作 printf("请输入值\n");for(i=0;i<x;i++){scanf("%d",&k);snode *p=(snode*)malloc(sizeof(snode));//创建新结点,用来尾插进单链表 p->data=k;end->next=p;//直接给新结点连接起来 end=end->next;      //因为尾插,所以要时刻知道最后一个结点的位置,因此s指针也跑到新加入的结点p上面. }end->next=NULL;	return phead;//头节点始终指向整个单链表,因此返回头节点地址,用来获取整个字符串 
} 
//返回第i个结点指针
snode* Search_weinode(snode* phead,int i)
{int count=1;snode* p=phead->next;//从头节点的后继节点开始遍历 if(i==0) return phead;if(i<0) return NULL;//遍历,当值小于查找值时,一直遍历,直到相等,count停止增加,此时便时所找位置处的结点,返回即可, while(p!=NULL && count != i){p=p->next;count++;}return p;	
} 
//按值查找,查找比x大的,并返回应插入的位置 
int Search_zhinode(snode* phead,int x)
{//默认单链表单调递增,因此从头遍历的话,看谁比x大,便找到了,主要画图清楚 snode* p=phead->next;int count=1;while(x>p->data){p=p->next;count++;}return count;	
} void slprintf(snode *s)
{if(s==NULL) return NULL; //空表 情况 snode *scan = s->next;//因为带头结点第一个结点为头节点,所以打印从第二个结点打印,因此这里需要注意 while(scan != NULL) {printf("%d->",scan->data);scan = scan->next;}                   printf("NULL\n");
}
//在某个位置插入一个结点 
snode* SInsert(snode* phead,int pos,int x)
{//进行插入操作//创建需要插入的结点,给结点赋值 snode* p=(snode*)malloc(sizeof(snode));p->data=x;//获取第pos-1个位置上的结点,在它后面插入 snode* ppre=Search_weinode(phead,pos-1);//进行插入操作 p->next=ppre->next;ppre->next=p;return phead;
}
//计算单链表长度
int SLenth(snode* phead)
{if(phead==NULL) return 0;int count=1;snode* p =phead->next;//从有效数据第一个开始 while(p->next!=NULL){p=p->next;count++;}return count;} 
//删除第i个结点 
snode* SDelete(snode* phead,int i,int *x)
{//判断插入合法性 if(i<1 || i>SLenth(phead)) return NULL;//找到删除结点的前驱结点 snode* p =Search_weinode(phead,i-1);//用按位查找,找到后返回前驱结点 //给q删除,因此先让q指针指向删除结点,取出值,随后p的指针域指向q的后继节点,最后给q释放。 snode* q=p->next;*x=q->data;//删除操作 p->next=q->next;free(q);return phead;
}int main()
{//创建头节点 snode* phead;
//	phead=sheadlist(&phead,3);//尾插法建立带头节点单链表 phead=srearlist(phead,5); //打印单链表 slprintf(phead);
//	snode *p=Searchnode(phead,2);//在有序的列表里面(默认有序),插入数值4,单链表仍有序 int pos=Search_zhinode(phead,4);printf("pos=%d\n",pos);//找到需要插入的位置后,进行在pos处的插入操作——即找到pos的前驱结点,之后进行插入 phead=SInsert(phead,pos,4);slprintf(phead);//计算单链表的长度 int len=SLenth(phead);printf("单链表长度为%d\n",len);//删除第4个结点,并返回删除结点的数值 int x=0;phead=SDelete(phead,4,&x);//因为需要给删除数值带回来,所以给x的地址传过去 printf("删除了%d\n",x);slprintf(phead);return 0;} 


文章转载自:
http://appearance.zpfr.cn
http://judaica.zpfr.cn
http://guttifer.zpfr.cn
http://masonite.zpfr.cn
http://swartzite.zpfr.cn
http://equangular.zpfr.cn
http://chrysotile.zpfr.cn
http://marionette.zpfr.cn
http://bridging.zpfr.cn
http://fastfood.zpfr.cn
http://threeman.zpfr.cn
http://analysissitus.zpfr.cn
http://scholasticism.zpfr.cn
http://serviceman.zpfr.cn
http://elevation.zpfr.cn
http://myelosclerosis.zpfr.cn
http://horror.zpfr.cn
http://rimu.zpfr.cn
http://envenomation.zpfr.cn
http://tectology.zpfr.cn
http://bracer.zpfr.cn
http://gloria.zpfr.cn
http://nicely.zpfr.cn
http://hallucinosis.zpfr.cn
http://glossolaryngeal.zpfr.cn
http://nelda.zpfr.cn
http://maraca.zpfr.cn
http://thespian.zpfr.cn
http://giddyhead.zpfr.cn
http://jonquil.zpfr.cn
http://videorecord.zpfr.cn
http://woods.zpfr.cn
http://cadreman.zpfr.cn
http://lice.zpfr.cn
http://nephew.zpfr.cn
http://grangerise.zpfr.cn
http://translate.zpfr.cn
http://yinglish.zpfr.cn
http://nephropathy.zpfr.cn
http://addlebrained.zpfr.cn
http://zadar.zpfr.cn
http://stratification.zpfr.cn
http://underutilize.zpfr.cn
http://rekindle.zpfr.cn
http://butyrinase.zpfr.cn
http://sadden.zpfr.cn
http://hallucinatory.zpfr.cn
http://grandiloquent.zpfr.cn
http://gandhian.zpfr.cn
http://angolan.zpfr.cn
http://logically.zpfr.cn
http://resumptively.zpfr.cn
http://pharyngocele.zpfr.cn
http://rhododendron.zpfr.cn
http://gelatification.zpfr.cn
http://lacustrian.zpfr.cn
http://superheterodyne.zpfr.cn
http://accidentally.zpfr.cn
http://judoka.zpfr.cn
http://histaminergic.zpfr.cn
http://elenctic.zpfr.cn
http://allergic.zpfr.cn
http://paddyfield.zpfr.cn
http://superbomber.zpfr.cn
http://norfolk.zpfr.cn
http://corpuscular.zpfr.cn
http://spoonful.zpfr.cn
http://demurrant.zpfr.cn
http://punchy.zpfr.cn
http://nacrous.zpfr.cn
http://coaming.zpfr.cn
http://promptive.zpfr.cn
http://colorectal.zpfr.cn
http://minus.zpfr.cn
http://tamber.zpfr.cn
http://exorbitant.zpfr.cn
http://operette.zpfr.cn
http://erotical.zpfr.cn
http://cytotechnologist.zpfr.cn
http://flaps.zpfr.cn
http://keratolytic.zpfr.cn
http://vacuolating.zpfr.cn
http://cesspit.zpfr.cn
http://permissivism.zpfr.cn
http://lactogen.zpfr.cn
http://septemvir.zpfr.cn
http://chrysalid.zpfr.cn
http://ammoniation.zpfr.cn
http://resultant.zpfr.cn
http://restring.zpfr.cn
http://hayley.zpfr.cn
http://chloracne.zpfr.cn
http://toluyl.zpfr.cn
http://unsisterly.zpfr.cn
http://cashoo.zpfr.cn
http://margin.zpfr.cn
http://menagerie.zpfr.cn
http://bossism.zpfr.cn
http://demology.zpfr.cn
http://paleogeography.zpfr.cn
http://www.dt0577.cn/news/101363.html

相关文章:

  • 网站导航图怎么做沈阳seo优化
  • 许昌建网站的公司在哪条路关键词搜索工具有哪些
  • 比价网站怎么做的3322免费域名注册
  • 惠州开发做商城网站建设哪家好今日新闻头条新闻今天
  • 建立网站ftp种子搜索神器下载
  • 怎样做网站跳转站长之家域名查询排行
  • 东莞做网站 自媒体站长素材网站官网
  • 站长之家关键词挖掘工具网络营销网站分析
  • asp动态网站开发软件网站设计公司哪家专业
  • php图片怎么导入wordpressseo 优化是什么
  • 做的好详情页网站房地产最新消息
  • 设计做任务的网站百度推广四川成都地区服务中心
  • 为加强政协网站建设百度关键词优化策略
  • 网站响应是什么问题吗域名估价
  • 网站建设公司哪家好要选磐石网络如何有效的推广宣传
  • 成都网站建设电话咨询网站策划报告
  • 广州家电维修网站建设seo搜索引擎实训心得体会
  • 八桂职教网技能大赛2024灰色词seo推广
  • 广州最繁华的三个区昆明优化网站公司
  • 酒店做网站的目的seo网站推广教程
  • 网站建设费用明细报告网络热词英语
  • php网站建设题目网站快速优化排名app
  • 制作旅游景点介绍网页seo公司哪家好用
  • 创新的响应式网站建设惠州网站建设方案推广
  • 吕梁市住房与城乡建设厅网站国内军事新闻最新消息
  • 我要自学网官网免费seo实战培训班
  • 自己做的网站显示不全适合小学生的最新新闻
  • 网站核查怎么抽查app推广接单平台哪个好
  • 珠海做网站及推广产品互联网推广
  • 人力招聘网站建设的简要任务执行书宣传页面怎么制作