C语言链表根据拼音排序插入节点

阅读: 评论:0

C语言链表根据拼音排序插入节点

C语言链表根据拼音排序插入节点

在做C语言课程设计的时候需求按字典排序新建职员,就是通过拼音进行排序
思路

  1. 创建双向链表
  2. 获取两个方向的节点与准备插入的节点的姓名属性做比较
  3. 需要注意:插入最后的话p->next = NULL,需要进行判断,否则出错
  4. 关键:if( (strcmp(p->worker.name,pre->worker.name) > 0 ) && ( strcmp(p->worker.name,q->worker.name) < 0 ) )
  5. 以下代码为摘录,完整系统代码可以查看我的另一篇博客
    C语言职工管理系统

//按拼音排序增加职工
int addWorker (Node *worker)	
{Node *p,*q,*pre;q = pre =  worker;//头结点不存储数据 if(q->next != NULL) {pre = q;q = q->next; q->prior = pre;printf("%p",q->prior->next);}int j = 0;printf("请依次输入:n"); printf("   编号t姓名n");printf("eg 1901tfurn"); p = (Node *)malloc(sizeof(Node));scanf("%s%s%s%s%s%s%s%s%s%s",p->worker.num,p->worker.name,p->worker.sex,p->worker.birthday,p->worker.workday,p->worker.edu,p->worker.job,p->worker.addr,p->worker.phone,p->worker.salary);printf("新增职工信息如下:nn");printf("编号t姓名t性别t出生年月t工作年月t学历t职务t工资t住址tt电话n"); printf("%st%st%st%stt%stt%st%st%st%st%sn",p->worker.num,p->worker.name,p->worker.sex,p->worker.birthday,p->worker.workday,p->worker.edu,p->worker.job,p->worker.addr,p->worker.phone,p->worker.salary);while(q!=NULL){//判断是否在前后两个节点之间if( (strcmp(p->worker.name,pre->worker.name) > 0 ) && ( strcmp(p->worker.name,q->worker.name) < 0 ) ){p->next = q;p->prior = q->prior;q->prior = p;p->prior->next = p;break;}	//判断是否是最后一个节点,加入第二个条件,否则无论如何都会运行,因为p->next最后都是NULL	if( (q->next == NULL) &&  ( strcmp(p->worker.name,pre->worker.name) > 0 )){printf(&#");q->next = p;p->prior = q;p->next = NULL;break;}//进行循环pre = q;q = q->next; q->prior = pre;}		 	
}

本文发布于:2024-02-03 23:20:36,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170697402351523.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:节点   拼音   链表   语言
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23