Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct node
- {
- int num;
- struct node *next;
- }*NodePtr;
- NodePtr sort(NodePtr list){
- NodePtr bfrBig=NULL, Big=NULL, prev = NULL, temp = list;
- int save=0;
- //Jika hanya 1 data
- if(list->next==NULL) {
- return list;
- }
- //printf("1");
- //Cari nilai terbesar
- while(temp != NULL){
- if (temp->num > save){
- save = temp->num;
- Big= temp;
- if(prev != NULL)
- bfrBig=prev;
- }
- prev =temp;
- temp=temp->next;
- }
- //Pemindahan nilai terbesar ke depan
- if(bfrBig!=NULL)
- bfrBig->next= Big->next;
- if(Big!=list)
- Big->next=list;
- list=Big;
- list->next= sort(list->next);
- return list;
- }
- void printlist(NodePtr list)
- {
- NodePtr temp = list;
- do{
- printf("%d ", temp->num);
- temp=temp->next;
- }while(temp!=NULL);
- printf("\n");
- }
- NodePtr newNode(int n)
- {
- NodePtr np = (NodePtr) malloc(sizeof (NodePtr));
- np -> num = n;
- np -> next = NULL;
- return np;
- }
- int main(){
- NodePtr np, tail;
- NodePtr head =NULL;
- int n;
- //Masukkan nilai, masukkan 0 untuk berhenti
- if (scanf("%d", &n) != 1) n = 0;
- while(n!=0){
- np = newNode(n);
- if(head== NULL) head = np;
- else tail->next = np;
- tail = np;
- if (scanf("%d", &n) != 1) n = 0;
- }
- printlist(head);
- printlist(sort(head));
- }
Advertisement
Add Comment
Please, Sign In to add comment