#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;
}
print_list(phead);
}
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);
}