Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- typedef struct LinkList
- {
- int priority;
- char filler[100];
- struct LinkList*link;
- };
- // Function builds list
- void buildList(struct LinkList**start_ref, char filler, int priority);
- // Function to sort list using buubble sort
- void sort_List(struct LinkList*start);
- // Function to swap string of two nodes a and b
- void bubbleSwap(struct LinkList*a, struct LinkList*b);
- // Function to print list
- void displayLinkedList(struct LinkList*start);
- int main()
- {
- char arr[100][100] = {"Spagatti", "And", "Meatballs", "Are" , "The", "Greatest"};
- int priorityArr[] = {4, 5, 2, 3 , 1, 6};
- int list_size, i;
- struct LinkList*start = NULL;
- for (i = 0; i< 6; i++)
- buildList(&start, arr[i], priorityArr[i]);
- /* print list */
- printf("n Linked list before sorting ");
- displayLinkedList(start);
- /* sort the linked list */
- sort_List(start);
- /* print list after sorting */
- printf("n Linked list after sorting ");
- displayLinkedList(start);
- return 0;
- }
- // Function to buildList
- void buildList(struct LinkList**start_ref, char filler, int priority)
- {
- struct LinkList*ptr1 = (struct iorb*)malloc(sizeof(struct iorb));
- strcpy(ptr1->filler, filler);
- ptr1->link = *start_ref;
- ptr1->priority = priority;
- *start_ref = ptr1;
- }
- //Function to print list
- void displayLinkedList(struct LinkList*start)
- {
- struct LinkList*temp = start;
- printf("n");
- while (temp!=NULL)
- {
- printf("%s, ", temp->filler);
- temp = temp->link;
- }
- }
- /* Bubble sort the given linked list */
- void sort_List(struct LinkList*start)
- {
- int isComplete;
- int i;
- struct LinkList*ptr1;
- struct LinkList*lptr = NULL;
- do
- {
- isComplete = 0;
- ptr1 = start;
- while (ptr1->link != lptr)
- {
- if (ptr1->priority > ptr1->link->priority)
- {
- bubbleSwap(ptr1, ptr1->link);
- isComplete = 1;
- }
- ptr1 = ptr1->link;
- }
- lptr = ptr1;
- }
- while (isComplete == 1);
- }
- // function to swap a and b
- void bubbleSwap(struct LinkList*a, struct LinkList*b)
- {
- char temp;
- strcpy(temp, a->filler);
- int tempP = a->priority;
- a->priority = b->priority;
- strcpy(a->filler, b->filler);
- strcpy(b->filler, temp);
- b->priority = tempP;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement