Hi, I am trying to make a program that finds the Nth node in the linked list where N is user input. When the user adds the element in the linked list, after each addition I ask whether to continue addition or stop. Here the user is expected to enter Y/N as his choice but the program skips this portion and doesn't wait for user input here.
Code:
#include<stdio.h>
#include<stdlib.h>
struct node
{
int nodeValue;
struct node *link;
};
struct node *addElement(struct node *headPtr,int elem);
int lengthList(struct node *headPtr);
int Find_Nth_Node(struct node *headPtr,int number);
int main()
{
int num,temp,value;
char choice;
struct node *front=NULL;
/*printf("Enter number of nodes:");
scanf("%d",&num);*/
choice='y';
printf("\nEnter elements:\n");
while(choice=='y'||choice=='Y')
{
scanf("%d",&temp);
front=addElement(front,temp);
printf("\nWant to enter more?");
scanf("%c",&choice); //doesn't wait for user input
}
printf("\nEnter the number of node whose value is desired:");
scanf("%d",&num);
if(num>lengthList(front))
{
printf("\nSorry, there are less than %d nodes in the list",num);
return 0;
}
value=Find_Nth_Node(front,num);
printf("\nThe value at node %d is:%d",num,value);
getchar();
return 0;
}
struct node *addElement(struct node *headPtr,int elem)
{
struct node *trav_ptr,*temp;
temp=(struct node *)malloc(sizeof(struct node));
if(temp==NULL)
{
printf("\nError, no free space");
return 0;
}
else
{
temp->nodeValue=elem;
temp->link=NULL;
}
if(headPtr==NULL) //If linked list is empty
headPtr=temp;
else //If linked list is not empty
{
trav_ptr=headPtr;
while(trav_ptr->link!=NULL)
trav_ptr=trav_ptr->link;
trav_ptr->link=temp;
}
return headPtr;
}
int lengthList(struct node *headPtr)
{
int length=1;
while(headPtr->link!=NULL)
{
headPtr=headPtr->link;
length++;
}
return length;
}
int Find_Nth_Node(struct node *headPtr,int number)
{
int ctr=0;
while(ctr++<number)
headPtr=headPtr->link;
return headPtr->nodeValue;
}
Waiting for some suggestions.