在做C语言课程设计的时候需求按字典排序新建职员,就是通过拼音进行排序
思路
if( (strcmp(p->worker.name,pre->worker.name) > 0 ) && ( strcmp(p->worker.name,q->worker.name) < 0 ) )
//按拼音排序增加职工
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 条评论) |