Program this in C PLEASE includeetc not C OR JAVA I am not s

Program this in C PLEASE (#include<stdio.h>..etc not C++ OR JAVA)

I am not satisfied with the other answers.....

I will give a good rating to who ever has the best solution.


There is a lot of sorting algorithms. So far, we have covered selection and insertion sort.
However, we only covered how selection sort is implemented using an array. Every sorting
algorithm implemented using an array can also be implemented using a linked list. In this
assignment, you will implement the selection sort algorithm using a linked list instead of an
array.

You will first create an interface for handling string items. Basically, you will need to do the
following:
• Create an interface named item.h
• Define a type Item represents a char * (i.e., a c-string)
• Implement a less function that compares between two strings and return which one
should precede.


Then, you will add to the linked list interface the following functions:
• linkedlistScanInit:
   • The header of the function will be linkedlistScaninit(pLinkedList list).
   • The function takes a linkedlist as input, reads from the command line a set of strings, and store them inside the linkedlist. You can call the function linkedlistAddNode to add a node to the end of the linked list.
• linkedlistShow:
   • The header of the function will be linkedlistShow(pLinkedList list).
   • The function takes a linkedlist as input, loops through the linkedlist and show what inside it

Finally,the main that is used is as follows: (DON\'T CHANGE )

//Include the needed headers here
int main(void)
{
pLinkedList list = linkedlistInitDefault();
linkedlistScanInit(list);
linkedlistShow(list);
destroy(&list);
return 0;
}

You will use the code in linkedListSt.h and linkedListSt.c

where the linkedListSt.h is as follows:

typedef struct node Node,* pNode;
#include \"item.h\"

struct node
{
Item item;
pNode next;
};

struct linkedlist
{
pNode front;
int size;
pNode iterator;
//Could add here any other thing we need
};

typedef struct linkedlist LinkedList, *pLinkedList;

pLinkedList linkedlistInitDefault();
int linkedlistGetSize(pLinkedList list);
void linkedlistAddNodeBack(pLinkedList list, Item item);
void linkedlistDestroy(pLinkedList *list);

//////////////////////////////////////////////////////

linkedListSt.c File as follows:

#include <stdio.h>
#include <stdlib.h>
#include \"linkedListSt.h\"

pLinkedList linkedlistInitDefault()
{
pLinkedList list = malloc(sizeof(LinkedList));
list->front = NULL;
list->iterator = NULL;
list->size = 0;
return list;
}

int linkedlistGetSize(pLinkedList list)
{
return list->size;
}

void linkedlistAddNodeBack(pLinkedList list, Item item)
{
if(list->front == NULL)
{
list->front = malloc(sizeof(Node));
if(list->front != NULL)
   {
   list->front->next = NULL;
   list->front->item = item;
   list->size++;
   }
}
else
{
pNode current = list->front;
while(current->next != NULL)
   {
   current = current->next;
   }
current->next = malloc(sizeof(Node));
if(current->next!=NULL)
   {
   current->next->item = item;
   current->next->next = NULL;
   list->size++;
   }
  
}
  
}


void linkedlistDestroy(pLinkedList *list)
{
if((*list) != NULL)
{
printf(\"list is not null\ \");
if((*list)->front == NULL)
   {
   free((*list));
   (*list) = NULL;
   }
else
   {
   printf(\"looping to delete all nodes\ \");
   pNode current = (*list)->front;
   pNode next = (*list)->front;
   while(current!=NULL)
   {
   printf(\"I am deleting here\ \");
   next = current->next;
   free(current);
   current = next;
   }
   printf(\"setting the list to null\ \");
   free((*list));
   (*list) = NULL;
   }
  
}

}

// The End

Solution

#include #include #include #include struct node { int data; int key; struct node *next; }; struct node *head = NULL; struct node *current = NULL; //display the list void printList() { struct node *ptr = head; printf\"\ [ \"); //start from the beginning while(ptr != NULL) { printf(\"(%d,%d) \",ptr->key,ptr->data); ptr = ptr->next; } printf(\" ]\"); } //insert link at the first location void insertFirst(int key, int data) { //create a link struct node *link = (struct node*) malloc(sizeof(struct node)); link->key = key; link->data = data; //point it to old first node link->next = head; //point first to new first node head = link; } //delete first item struct node* deleteFirst() { //save reference to first link struct node *tempLink = head; //mark next to first link as first head = head->next; //return the deleted link return tempLink; } //is list empty bool isEmpty() { return head == NULL; } int length() { int length = 0; struct node *current; for(current = head; current != NULL; current = current->next) { length++; } return length; } //find a link with given key struct node* find(int key) { //start from the first link struct node* current = head; //if list is empty if(head == NULL) { return NULL; } //navigate through list while(current->key != key) { //if it is last node if(current->next == NULL) { return NULL; } else { //go to next link current = current->next; } } //if data found, return the current Link return current; } //delete a link with given key struct node* delete(int key) { //start from the first link struct node* current = head; struct node* previous = NULL; //if list is empty if(head == NULL) { return NULL; } //navigate through list while(current->key != key) { //if it is last node if(current->next == NULL) { return NULL; } else { //store reference to current link previous = current; //move to next link current = current->next; } } //found a match, update the link if(current == head) { //change first to point to next link head = head->next; } else { //bypass the current link previous->next = current->next; } return current; } void sort() { int i, j, k, tempKey, tempData; struct node *current; struct node *next; int size = length(); k = size ; for ( i = 0 ; i < size - 1 ; i++, k-- ) { current = head; next = head->next; for ( j = 1 ; j < k ; j++ ) { if ( current->data > next->data ) { tempData = current->data; current->data = next->data; next->data = tempData; tempKey = current->key; current->key = next->key; next->key = tempKey; } current = current->next; next = next->next; } } } void reverse(struct node** head_ref) { struct node* prev = NULL; struct node* current = *head_ref; struct node* next; while (current != NULL) { next = current->next; current->next = prev; prev = current; current = next; } *head_ref = prev; } main() { insertFirst(1,10); insertFirst(2,20); insertFirst(3,30); insertFirst(4,1); insertFirst(5,40); insertFirst(6,56); printf(\"Original List: \"); //print list printList(); while(!isEmpty()) { struct node *temp = deleteFirst(); printf(\"\ Deleted value:\"); printf(\"(%d,%d) \",temp->key,temp->data); } printf(\"\ List after deleting all items: \"); printList(); insertFirst(1,10); insertFirst(2,20); insertFirst(3,30); insertFirst(4,1); insertFirst(5,40); insertFirst(6,56); printf(\"\ Restored List: \"); printList(); printf(\"\ \"); struct node *foundLink = find(4); if(foundLink != NULL) { printf(\"Element found: \"); printf(\"(%d,%d) \",foundLink->key,foundLink->data); printf(\"\ \"); } else { printf(\"Element not found.\"); } delete(4); printf(\"List after deleting an item: \"); printList(); printf(\"\ \"); foundLink = find(4); if(foundLink != NULL) { printf(\"Element found: \"); printf(\"(%d,%d) \",foundLink->key,foundLink->data); printf(\"\ \"); } else { printf(\"Element not found.\"); } printf(\"\ \"); sort(); printf(\"List after sorting the data: \"); printList(); reverse(&head); printf(\"\ List after reversing the data: \"); printList(); }
Program this in C PLEASE (#include<stdio.h>..etc not C++ OR JAVA) I am not satisfied with the other answers..... I will give a good rating to who ever has
Program this in C PLEASE (#include<stdio.h>..etc not C++ OR JAVA) I am not satisfied with the other answers..... I will give a good rating to who ever has
Program this in C PLEASE (#include<stdio.h>..etc not C++ OR JAVA) I am not satisfied with the other answers..... I will give a good rating to who ever has
Program this in C PLEASE (#include<stdio.h>..etc not C++ OR JAVA) I am not satisfied with the other answers..... I will give a good rating to who ever has

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site