zoukankan      html  css  js  c++  java
  • 单链表冒泡排序

    今天做链表排序有个误区,就是以为交换的时候要连next节点也交换,还要固定head节点,想了很久也没做出来,但是后来看网上的提示,才知道只要交换节点内的数据就可以了,根本不用交换next节点

    #include <stdio.h>
    #include <stdlib.h>
    
    struct node
    {
    	int data;
    	struct node *next;
    };
    
    struct node *create_list(int a[],int len)
    {
    	struct node *phead;
    	struct node *ptr;
    	struct node *pre;
    	phead=(struct node *)malloc(sizeof(struct node));
    	int i=0;
    	phead->data=a[i];
    	phead->next=NULL;
    	ptr=phead->next;
    	pre=phead;
    	for(i=1;i<len;i++)
    	{
    		ptr=(struct node *)malloc(sizeof(struct node));
    		ptr->data=a[i];
    		ptr->next=NULL;
    		pre->next=ptr;
    		ptr=ptr->next;
    		pre=pre->next;
    	}
    	
    	return phead;
    }
    
    void print_list(struct node *phead)
    {
    	struct node *ptr=phead;
    	
    	while(ptr != NULL)
    	{
    		printf("%d ",ptr->data);
    		ptr=ptr->next;
    	}
    	
    	printf("\n");
    }
    
    struct node *bubble(struct node *phead,int len)
    {
    	struct node *ptr,*next;
    	int temp;
    	
    	for(int i=0;i<len;i++)
    	{
    		ptr=phead;
    		next=ptr->next;
    		for(int j=len-i-1;j>0;j--)
    		{
    			if(ptr->data > next->data)
    			{
    				temp=ptr->data;
    				ptr->data=next->data;
    				next->data=temp;
    			}
    			ptr=ptr->next;
    			next=next->next;
    		}
    	}
    	
    	return phead;
    }
    
    int main()
    {
    	int a[10]={
    		5,3,6,8,9,6,5,4,2,7
    	};
    	
    	struct node *phead;
    	phead=create_list(a,10);	
    
    	print_list(phead);
    	
    	phead=bubble(phead,10);
    	
    	print_list(phead);
    }
    
  • 相关阅读:
    转专业不设门槛 浙江工商职院把选择权交给学生
    软件开发方法:
    抽签系统
    软件生命周期。
    软件测试的意义!
    课程不明白的问题?
    目前流行的源程序版本管理软件和项目管理软件有哪些,各有什么缺点?
    自我介绍
    结对编程的利与弊
    第三周目标随笔
  • 原文地址:https://www.cnblogs.com/linyilong3/p/1899018.html
Copyright © 2011-2022 走看看