int mainint argc const char argv list Node

  • Slides: 7
Download presentation

int main(int argc, const char * argv[]) { list. Node *L; typedef struct List.

int main(int argc, const char * argv[]) { list. Node *L; typedef struct List. Node{ char *name; int grade; struct List. Node *link; } list. Node; L = add. Front. Node(L, "JEON", 95; ( L = add. Front. Node(L, "PARK", 90; ( L = add. Front. Node(L, "KANG", 42; ( L = add. Front. Node(L, "LEE", 80; ( L = add. Front. Node(L, "CHOI", 50; ( show. All. In. List(L); list. Node* bubble. Sort. By. Grade(list. Node *); list. Node* selection. Sort. By. Grade(list. Node *); int get. List. Size(list. Node *); void show. All. In. List(list. Node *); list. Node* add. Front. Node(list. Node *, char *, int); list. Node* create. Node(char *, int); printf("[selection]--------n; (" L = selection. Sort. By. Grade(L); show. All. In. List(L); printf("[bubble]--------n; (" L = bubble. Sort. By. Grade(L); show. All. In. List(L); { return 0;

Create Node list. Node* create. Node(char *name, int grade){ list. Node* new. Node =

Create Node list. Node* create. Node(char *name, int grade){ list. Node* new. Node = (list. Node *)malloc(sizeof(list. Node)); new. Node->name = name; new. Node->grade = grade; new. Node->link = NULL; return new. Node; }

Add Node to List list. Node* add. Front. Node(list. Node *L, char *name, int

Add Node to List list. Node* add. Front. Node(list. Node *L, char *name, int grade){ // make a new node list. Node *new. N = create. Node(name, grade); // if first node if( L == NULL}( L = new. N; return L; { // if existing list, add to the first position. new. N->link = L; L = new. N; return L; {

Add Node to List & get Size void show. All. In. List(list. Node *L){

Add Node to List & get Size void show. All. In. List(list. Node *L){ list. Node *temp = L; int i = 0; while (temp != NULL) { printf("[%d] %s : %dn", i++, temp->name, temp>grade; ( temp = temp->link; { { int get. List. Size(list. Node *L){ list. Node *temp = L; int i = 0; while (temp != NULL) { i; ++ temp = temp->link; { return i; {

list. Node* selection. Sort. By. Grade(list. Node *L){ list. Node *curr = L; Selection

list. Node* selection. Sort. By. Grade(list. Node *L){ list. Node *curr = L; Selection Sort while ( curr != NULL ) { // last node if ( curr->link == NULL}( break; { list. Node *temp = curr->link; list. Node *min = temp; while ( temp != NULL ) { if (min->grade > temp->grade}( min = temp; { temp = temp->link; { if ( curr->grade > min->grade}( int tmp. Grade = min->grade; min->grade = curr->grade; curr->grade = tmp. Grade; { curr = curr->link; { return L; {

list. Node* bubble. Sort. By. Grade(list. Node *L){ int len = get. List. Size(L);

list. Node* bubble. Sort. By. Grade(list. Node *L){ int len = get. List. Size(L); Bubble Sort // if length of list is less than 1 if (len <= 1( return L; list. Node *p 1 = L; list. Node *p 2 = L->link; for ( int i = len - 1; i >= 0; i}( -// init p 1 = L; p 2 = L->link; for ( int j = 0; j < i; j}( ++ if ( p 1 ->grade > p 2 ->grade}( // swap int tmp = p 1 ->grade; p 1 ->grade = p 2 ->grade; p 2 ->grade = tmp; //{ if // move next position p 1 = p 1 ->link; p 2 = p 2 ->link; { { return L;