• 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("请依次输入:
    "); 
    	printf("   编号	姓名
    ");
    	printf("eg 1901	fur
    "); 
    	
    	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("新增职工信息如下:
    
    ");
    	printf("编号	姓名	性别	出生年月	工作年月	学历	职务	工资	住址		电话
    "); 
    	printf("%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);
    	
    	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("2....");
    			q->next = p;
    			p->prior = q;
    			p->next = NULL;
    			break;
    		}
    	//进行循环
    		pre = q;
    		q = q->next; 
    		q->prior = pre;
    	}		 	
    }
    
    
  • 相关阅读:
    Java项目中读取properties文件,以及六种获取路径的方法
    在eclipse中使用JUnit4,以及使用JUnit4进行单元测试的技巧
    [Evernote]印象笔记使用经验技巧
    使用Word2010发布博客文章
    Win7/8 绿色软件开机启动
    常见笔试题
    排序
    数据库知识归纳(索引)
    数据库知识归纳(事务)
    Redis
  • 原文地址:https://www.cnblogs.com/furfur-jiang/p/12238743.html
Copyright © 2020-2023  润新知