Saturday 13 February 2016

Algorithm 5.7 Procedure 5.6 (Insert Item in a Sorted Linked List)


Before seeing the solution make sure that you tried enough. Don’t paste the whole code, just find out the logic. If you stuck in trouble, just inform me on comment.

/**Bismillahir Rahmanir Rahim.**/

#include <stdio.h>
#include <stdlib.h>
int m=1, i, x, n, nth, y;
struct node
{
    int info;
    struct node* ptr;
};

struct node* start;
struct node* temp1;
struct node* temp2;

void insert(int x)
{
    temp1 = (struct node*) malloc(sizeof(struct node));
    temp1->info = x;
    temp1->ptr = NULL;
    if(m==1)
    {
        temp1->ptr = NULL;
        start = temp1;
        temp2 = temp1;
        m = 0;
        return ;
    }
    temp2->ptr = temp1;
    temp2 = temp1;
}

int find_position(int x)
{
    temp1 = start;
    for(i=1; temp1!=NULL; i++)
    {
        if(temp1->info >= x)
            return i;
        temp1 = temp1->ptr;
    }
    return i;
}
void insert_first(int x)
{
    temp1 = (struct node*) malloc(sizeof(struct node));
    temp1->info = x;

    temp1->ptr = start;
    start = temp1;
}

void insert_nth(int nth, int x)
{
    if(nth==1)
    {
        insert_first(x);
        return;
    }
    temp1 = (struct node*) malloc(sizeof(struct node));
    temp1->info = x;
    temp2 = start;
    for(i=0; i<nth-2; i++)
        temp2 = temp2->ptr;

    temp1->ptr = temp2->ptr;
    temp2->ptr = temp1;
}

void print()
{
    temp1 = start;
    printf("List is: ");
    while(temp1 != NULL)
    {
        printf(" %d ", temp1->info);
        temp1 = temp1->ptr;
    }
    printf("\n");
    free(temp1);
}
int main()
{
    start = NULL;
    printf("How Many Node??\n");
    scanf("%d", &n);
    printf("Print %d node :: \n", n);
    for(i=0; i<n; i++)
    {
        scanf("%d", &x);
        insert(x);
    }
    printf("What you want to Insert....\n");
    scanf("%d", &x);
    y = find_position(x); /**PROCEDURE 5.6**/
    insert_nth(y, x);
    print();
    free(temp1);
    return 0;
}

First Input n = number of Total Node.  ex.   4.
second Input n node item . ex.     10  30  40  50.
What I want to insert. ex. 20.

Sample Input:
------------------

4
10 30 40 50
20

sample Output:
---------------------

List is : 10 20 30 40 50


0 comments:

Post a Comment

Note: only a member of this blog may post a comment.