Golgappa.net | Golgappa.org | BagIndia.net | BodyIndia.Com | CabIndia.net | CarsBikes.net | CarsBikes.org | CashIndia.net | ConsumerIndia.net | CookingIndia.net | DataIndia.net | DealIndia.net | EmailIndia.net | FirstTablet.com | FirstTourist.com | ForsaleIndia.net | IndiaBody.Com | IndiaCab.net | IndiaCash.net | IndiaModel.net | KidForum.net | OfficeIndia.net | PaysIndia.com | RestaurantIndia.net | RestaurantsIndia.net | SaleForum.net | SellForum.net | SoldIndia.com | StarIndia.net | TomatoCab.com | TomatoCabs.com | TownIndia.com
Interested to Buy Any Domain ? << Click Here >> for more details...


how to do in place reversal of a linked list(singly or
doubly)?

Answers were Sorted based on User's Feedback



how to do in place reversal of a linked list(singly or doubly)?..

Answer / divakar & venkatesh

int reverse()
{
node *r,*s,*q;
s=NULL;
q=p;
while(q!=NULL)
{
r=q;
q=q->link;
r->link=s;
s=r;
}
p=r;
return;
}
this is reverse fun for single linked list.

Is This Answer Correct ?    7 Yes 4 No

how to do in place reversal of a linked list(singly or doubly)?..

Answer / ashish gupta

rev()
{
struct node *a1,*a2,*a3;
if(start->next==NULL) /*Only one element exists*/
return;
a1=start;
a2=a1->next;
a3=a2->next;
a1->next=NULL;
a2->next=a1;
while(a3!=NULL)
{
a1=a2;
a2=a3;
a3=a3->next;
a2->next=a1;
}
start=a2;
}

Is This Answer Correct ?    2 Yes 0 No

how to do in place reversal of a linked list(singly or doubly)?..

Answer / vadivelt

Hi,
I have written code for some of the possible questions
asked in Single linked list in C.

Also the code covers the answer for the question asked here.

Here in the code, almost all printf statements may be of two
lines, So if you are directly copiying the code, into ur
compiler u may get errors. So make all the printf to single
line then compile it and see the o/p.

#include<stdio.h>
#include<conio.h>
#define ADDATBEG 1
#define ADDATEND 2
#define INSERT 3
#define DEL 4
#define SEARCH 5
#define SORT 6
#define REVERSE 7
#define NODEFROMEND 8

struct node
{
int data;
struct node *next;
};
struct node *BaseNode = '\0';

/*Function prototypes*/
void AddAtBeg(struct node **BaseNode, int data);
void AddAtEnd(struct node **BaseNode, int data);
void AddAtMid(struct node **BaseNode, int data, int pos);
void DelNode(struct node **BaseNode, int pos);
void DisList(struct node **BaseNode);
void SearchNode(struct node **BaseNode, int data);
void funchoice(int choice);
void SortList(struct node **BaseNode);
void NthNodeFrmEnd(struct node **BaseNode, int n);
void RevList(struct node **BaseNode);

int main()
{
int i, choice;
printf("ENTER THE CHOICE:\n");
printf("1.TO ADD THE NODE AT BEGINING - STACK \n2.TO ADD
THE NODE AT THE END - QUEUE\n");
printf("\nCHOICE:");
scanf("%d", &choice);
funchoice(choice);

printf("\n\nENTER CHOICE \n");
printf("3.TO INSERT NODE\n");
printf("4.TO DEL NODE\n");
printf("5.TO SEARCH GIVEN NODE IN THE LIST\n");
printf("6.TO SORT THE LIST\n");
printf("7.TO REVERSE THE LIST\n");
printf("8.VALUE OF 'N'th FROM LAST\n");
printf("\nCHOICE:");
scanf("%d", &choice);
funchoice(choice);

getch();
}

void funchoice(int choice)
{
int no = 0, element = 0,i;
switch(choice)
{
case ADDATBEG:
printf("\nENTER THE NO OF ELEMENTS TO BE ADDED\n");
scanf("%d", &no);
printf("\nENTER THE ELEMENTS TO BE ADDED IN THE
LIST\n");
for(i = 0; i<no; i++)
{
scanf("%d", &element);
AddAtBeg(&BaseNode, element);

}
DisList(&BaseNode);
break;

case ADDATEND:
printf("\nENTER THE NO OF ELEMENTS TO BE ADDED\n");
scanf("%d", &no);
printf("\nENTER THE ELEMENTS TO BE ADDED IN THE
LIST\n");
for(i = 0; i<no; i++)
{
scanf("%d", &element);
AddAtEnd(&BaseNode, element);
}
DisList(&BaseNode);
break;

case INSERT:
printf("\nENTER THE NODE POSTION WHERE THE NEW NODE
TO BE INSERTED\n");
scanf("%d", &no);
printf("\nENTER THE NO TO BE INSERTED\n");

scanf("%d", &element);
AddAtMid(&BaseNode, element, no);
DisList(&BaseNode);
break;

case DEL:
printf("\nENTER THE NODE POSTION OF THE NODE TO BE
DELETED\n");
scanf("%d", &no);
DelNode(&BaseNode, no);
DisList(&BaseNode);
break;

case SEARCH:
printf("\nENTER THE VALUE TO BE SEARCHED IN THE
LIST\n");
scanf("%d", &element);
SearchNode(&BaseNode, element);
break;

case SORT:
SortList(&BaseNode);
DisList(&BaseNode);
break;

case REVERSE:
RevList(&BaseNode);
DisList(&BaseNode);
break;

case NODEFROMEND:
printf("\nENTER THE NODE POSITION FROM END TO WHICH
THE VALUE HAS TO BE FOUND\n");
scanf("%d", &no);
NthNodeFrmEnd(&BaseNode, no);
break;

default:
exit(0);
break;

}
}
/*To print the data in the linked list*/
void DisList(struct node **BaseNode)
{
struct node *temp;
temp = *BaseNode;
printf("\nNODES IN THE LIST IS \n");
while(temp != '\0')
{
printf("%d ", temp->data);
temp = temp->next;
}
}


/*Stack Implementation*/
void AddAtBeg(struct node **BaseNode, int data)
{
struct node *temp;
temp = (struct node *)malloc(sizeof(struct node));
if(temp != '\0')
{
temp->data = data;
temp->next = *BaseNode;
*BaseNode = temp;
}
}
/*Queue Implementation*/
void AddAtEnd(struct node **BaseNode, int data)
{
struct node *temp, *temp1;
temp = *BaseNode;
if(temp == '\0')
{
/*List is empty - Create first node*/
temp1 = (struct node *)malloc(sizeof(struct node));
if(temp1 != '\0')
{
temp1->data = data;
temp1->next = '\0';
*BaseNode = temp1;
}
}
else
{
/*Node is existing already, So create another node*/
while(temp->next != '\0')
{
temp = temp->next;
}
temp1 = (struct node *)malloc(sizeof(struct node));
if(temp1 != '\0')
{
temp1->data = data;
temp1->next = '\0';
temp->next = temp1;
}
}
}

/*To insert a node between two nodes*/
void AddAtMid(struct node **BaseNode, int data, int pos)
{
/*To insert a node in between to the given node*/
struct node *temp, *temp1;
int count = 0;
temp = *BaseNode;
/*count, the no of nodes available in the list*/
while(temp->next != '\0')
{
count++;
temp = temp->next;
}

/*Check whether the enough nodes are available or not*/
if(pos < count+1)
{
temp = *BaseNode;
while(pos-1)
{
temp = temp->next;
pos--;
}
temp1 = (struct node *)malloc(sizeof(struct node));
if(temp1 != '\0')
{
temp1->data = data;
temp1->next = temp->next;
temp->next = temp1;
}
}
else
{
printf("\nNEW NODE CANT BE INSERTED:THERE IS NO
ENOUGH NODES IN THE LIST\n");
}
}

/*To delete a particular node in the list*/
void DelNode(struct node **BaseNode, int pos)
{
struct node *temp, *temp1;
int count = 0, pos1;
temp = *BaseNode;
pos1 = pos;

/*count, the no of nodes available in the list*/
while(temp->next != '\0')
{
count++;
temp = temp->next;
}
/*Check whether the enough nodes are available or not*/
if(pos <= (count+1))
{
temp = *BaseNode;
temp1 = temp->next;
while(pos-2)
{
temp = temp->next;
temp1 = temp1->next;
pos--;
}
temp->next = temp1->next;
printf("\n\nTHE DATA '%d' AT THE NODE '%d' IS
DELETED \n\n", temp1->data, pos1);
free(temp1);
}
else
{
printf("\n\nGIVEN NODE CANT BE DELETED:THERE IS NO
ENOUGH NODES IN THE LIST\n");
}
}

/*To search the given data in the linked list*/
void SearchNode(struct node **BaseNode, int data)
{
struct node *temp;
int count = 0;
temp = *BaseNode;
while(temp != '\0')
{
count++;
if(temp->data == data)
{
printf("\nTHE NODE WITH DATA '%d' FOUND AT
THE POSITION '%d'\n", data, count);
break;
}
else if(temp->next == '\0')
{
printf("\nTHE NODE IS NOT FOUND IN THE
LIST\n");
}
temp = temp->next;
}
}

/*To Sort the linked list in ascending order*/
void SortList(struct node **BaseNode)
{
struct node *temp, *temp1;
int localvar;
temp = *BaseNode;
temp1 = temp->next;
while(temp1 != '\0')
{
if(temp->data > temp1->data)
{
localvar = temp->data;
temp->data = temp1->data;
temp1->data = localvar;
}
temp = temp->next;
temp1 = temp1->next;
}
}

/*To find the 'n'th node from last node of linked list by
traversing the list only once*/
void NthNodeFrmEnd(struct node **BaseNode, int n)
{
struct node *temp, *temp1;
int count = 0;
temp1 = temp = *BaseNode;
while(temp1 != '\0')
{
count++;
temp1 = temp1->next;
}
if(n <= count)
{
count = 0;
temp1 = *BaseNode;
while(temp1->next != '\0')
{
count++;
if(count > n-1)
{
temp = temp->next;
}
temp1 = temp1->next;
}
printf("\nNODE %d FROM LAST, HOLD THE VALUE %d\n",
n, temp->data);
}
else
{
printf("\nTHERE IS NO ENOUGH NODES IN THE LIST\n");

}
}

/*To Reverse a given linked list*/
void RevList(struct node **BaseNode)
{
struct node *Sec, *Thrd;
Sec = (*BaseNode)->next;
Thrd = Sec->next;
(*BaseNode)->next = '\0';

while(Thrd != '\0')
{
Sec->next = *BaseNode;
*BaseNode = Sec;
Sec = Thrd;
Thrd = Thrd->next;
}
Sec->next = *BaseNode;
*BaseNode = Sec;
}

Is This Answer Correct ?    0 Yes 2 No

Post New Answer

More C Interview Questions

If one always ought to act so as to produce the best possible circumstances, then morality is extremely demanding. No one could plausibly claim to have met the requirements of this "simple principle." . . . It would seem strange to punish those intending to do good by sentencing them to an impossible task. Also, if the standards of right conduct are as extreme as they seem, then they will preclude the personal projects that humans find most fulfilling. From an analytic perspective, the potential extreme demands of morality are not a "problem." A theory of morality is no less valid simply because it asks great sacrifices. In fact, it is difficult to imagine what kind of constraints could be put on our ethical projects. Shouldn't we reflect on our base prejudices, and not allow them to provide boundaries for our moral reasoning? Thus, it is tempting to simply dismiss the objections to the simple principle. However, in Demands of Morality, Liam Murphy takes these objections seriously for at least two distinct reasons. First, discussion of the simple principle provides an excellent vehicle for a discussion of morality in general. Perhaps, in a way, this is Murphy's attempt at doing philosophy "from the inside out.". . . Second, Murphy's starting point tells us about the nature of his project. Murphy must take seriously the collisions between moral philosophy and our intuitive sense of right and wrong. He [must do so] because his work is best interpreted as intended to forge moral principles from our firm beliefs, and not to proscribe beliefs given a set of moral principles. [Murphy] argues from our considered judgments rather than to them. . . For example, Murphy cites our "simple but firmly held" beliefs as supporting the potency of the over-demandingness objection, and nowhere in the work can one find a source of moral values divorced from human preferences. Murphy does not tell us what set of "firm beliefs" we ought to have. Rather, he speaks to an audience of well-intentioned but unorganized moral realists, and tries to give them principles that represent their considered moral judgments. Murphy starts with this base sense of right and wrong, but recognizes that it needs to be supplemented by reason where our intuitions are confused or conflicting. Perhaps Murphy is looking for the best interpretation of our convictions, the same way certain legal scholars try to find the best interpretation of our Constitution. This approach has disadvantages. Primarily, Murphy's arguments, even if successful, do not provide the kind of motivating force for which moral philosophy has traditionally searched. His work assumes and argues in terms of an inner sense of morality, and his project seeks to deepen that sense. Of course, it is quite possible that the moral viewpoints of humans will not converge, and some humans have no moral sense at all. Thus, it is very easy for the moral skeptic to point out a lack of justification and ignore the entire work. On the other hand, Murphy's choice of a starting point avoids many of the problems of moral philosophy. Justifying the content of moral principles and granting a motivating force to those principles is an extraordinary task. It would be unrealistic to expect all discussions of moral philosophy to derive such justifications. Projects that attempt such a derivation have value, but they are hard pressed to produce logical consequences for everyday life. In the end, Murphy's strategy may have more practical effect than its first-principle counterparts, which do not seem any more likely to convince those that would reject Murphy's premises. 1) The author suggests that the application of Murphy's philosophy to the situations of two different groups: a) would help to solve the problems of one group but not of the other. b) could result in the derivation of two radically different moral principles. c) would be contingent on the two groups sharing the same fundamental beliefs. d) could reconcile any differences between the two groups. 2) Suppose an individual who firmly believes in keeping promises has promised to return a weapon to a person she knows to be extremely dangerous. According to Murphy, which of the following, if true, would WEAKEN the notion that she should return the weapon? a) She also firmly believes that it is morally wrong to assist in any way in a potentially violent act. b) She believes herself to be well-intentioned in matters of right and wrong. c) The belief that one should keep promises is shared by most members of her community. d) She derived her moral beliefs from first-principle ethical philosophy. 3) The passage implies that a moral principle derived from applying Murphy's philosophy to a particular group would be applicable to another group if: a) the first group recommended the principle to the second group. b) the moral viewpoints of the two groups do not converge. c) the members of the second group have no firmly held beliefs. d) the second group shares the same fundamental beliefs as the first group. 4) According to the passage, the existence of individuals who entirely lack a moral sense: a) confirms the notion that moral principles should be derived from the considered judgments of individuals. b) suggests a potential disadvantage of Murphy's philosophical approach. c) supports Murphy's belief that reason is necessary in cases in which intuitions are conflicting or confused. d) proves that first-principle strategies of ethical theorizing will have no more influence over the behavior of individuals than will Murphy's philosophical approach. 5) Which of the following can be inferred about "doing philosophy from the inside out?" a) Murphy was the first philosopher to employ such an approach. b) It allows no place for rational argument in the formation of ethical principles. c) It is fundamentally different from the practice of first-principle philosophy. d) It is designed to dismiss objections to the "simple principle." 6) A school board is debating whether or not to institute a dress code for the school's students. According to Murphy, the best way to come to an ethical decision would be to: a) consult the fundamental beliefs of the board members. b) analyze the results of dress codes instituted at other schools. c) survey the students as to whether or not they would prefer a dress code. d) determine whether or note a dress code has ever been instituted in the school's history

0 Answers   Accenture,


What is return type in c?

0 Answers  


What is the meaning of this decleration? unsigned char (*pArray[10][10]); please reply.

1 Answers  


Write a program to find the number of times that a given word(i.e. a short string) occurs in a sentence (i.e. a long string!). Read data from standard input. The first line is a single word, which is followed by general text on the second line. Read both up to a newline character, and insert a terminating null before processing. Typical output should be: The word is "the". The sentence is "the cat sat on the mat". The word occurs 2 times.

0 Answers  


What is static and volatile in c?

0 Answers  


What is Conio.h ?

2 Answers   TCS,


There are N egg baskets and the number of eggs in each basket is a known quantity. Two players take turns to remove these eggs from the baskets. On each turn, a player must remove at least one egg, and may remove any number of eggs provided they all belong to the same basket. The player picking the last egg(s) wins the game. If you are allowed to decide who is going to start first, what mathematical function would you use to decide so that you end up on the winning side? Upload a C program to demonstrate the behaviour of the game.

2 Answers  


Are there namespaces in c?

0 Answers  


What are 'near' and 'far' pointers?

0 Answers  


totally how much header files r in c language

8 Answers   TCS,


formula to convert 2500mmh2o into m3/hr

0 Answers  


Is null valid for pointers to functions?

0 Answers  


Categories