千家信息网

C语言如何实现链表结点的移动

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,小编给大家分享一下C语言如何实现链表结点的移动,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!#include#includ
千家信息网最后更新 2025年02月01日C语言如何实现链表结点的移动

小编给大家分享一下C语言如何实现链表结点的移动,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

#include

#include

#define N 9

typedef struct node{

int data;

struct node * next;

}ElemSN;

ElemSN * Createlink(int a[]){ //逆向创建单向链表

int i;

ElemSN * h=NULL, * p;

for( i=N-1;i>=0;i--){

p=(ElemSN *)malloc(sizeof(ElemSN));

p->data =a[i];

p->next=h;

h=p;

}

return h;

}

void Printlink(ElemSN * h){

ElemSN * p;

for(p=h;p;p=p->next)

printf("%2d\n",p->data);

}

ElemSN * MoveMaxnodeToTail(ElemSN*h){

ElemSN * Pmax,* p,* Qmax,* q;

Pmax=h;

for(q=h,p=h->next;p;q=p,p=p->next){

if(Pmax->datadata){

Pmax=p;

Qmax=q;

}

} //for循环出来p等于null,q为尾结点,Pmax最大值结点,Qmax最大值结点的上一结点

if(Pmax->next) { //判断最大值结点是否为尾结点

if(Pmax!=h) //判断最大值结点是否为头结点

Qmax->next=Pmax->next; //断链挂链

else

h=h->next; //是头结点,头结点指针h后移

Pmax->next=q->next; //关键操作:如果不把最大值结点的next给NULL(q->next等于NULL),次链就位单向循环链表

q->next=Pmax;//最大值挂到尾结点

}

return h;

}

int main(void){

int a[]={9,3,5,8,4,7,2,6,1};

ElemSN * head;

head=Createlink(a,9);

head=MoveMaxnodeToTail(head);

Printlink(head);

}

以上是"C语言如何实现链表结点的移动"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

结点 最大 最大值 篇文章 语言 移动 内容 单向 不怎么 关键 大部分 挂链 指针 更多 知识 行业 资讯 资讯频道 频道 上一 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 杭州市东方网络技术有限公司 服务器重启后中心服务器连接失败 电力网络安全事件标准 温州跃通网络技术有限公司 网络安全涉及什么安全 嵌入式软件开发企业账务处理 棋牌游戏服务器端架构 信息软件开发项目 深圳市诚骏网络技术有限公司 网络安全主管是什么 网络安全30个英语 达梦数据库主机模式切换普通模式 未成年人网络安全涉及内容 复杂数据怎么写进数据库 向日葵服务器登录不上 期刊数据库使用 软件开发项目管理的基本问题 山东省 网络安全 河北人的网络安全 郑州点染网络技术 上市的科技互联网 小学关于网络安全的手抄报 岳阳软件开发哪家价格实惠 网络安全培训哪种最好 乐刻网络技术双休 软件开发报价怎么写 新下载的软件需要服务器地址 车联网网络安全和数据安全指南 图博网络技术设计公司 校企软件开发面试
0