C :: Reversing Linked List In Reverse Order Using Recursion
May 3, 2014
I was trying to reverse a linklist in reverse direction using the recursion. I was able to reverse n - 1 element but it is not printing the first one. Below is my code.
Code:
typedef struct linklist {
int data;
linklist *next;
};
void add(int data,linklist **node) {
[code]....
This is happening since recursion is starting from second node, which is due to reason not printing the first one when recursion print values from stack once
node != NULL
Condition is met.
Currently I am using below statement for printing the first element;
reverse_recur(node);
printf("
Print In Reverse Order
%d
",node->data);
Implement a recursive function named void printBack(DoublyLinkedNode<T>* node) for the class DoublyLinkedCircularList which will print out the elements in the list from back to front. The function is initially called with the first node in the list. You may not make use of the previous(prev) links
This is my solution where I got 2 out of a possible 3 marks:
template<class T> void DoublyLinkedCircularList<T> :: printBack(DoublyLinkedNode<T>* node) { if(node->next == NULL) //Correct- 1 mark return 0; else printBack(node->next); //Correct - 1 mark cout << current-> element << " "; }
I have a linked list I made and am practicing a simple recursion function sum() which returns the sum of all numbers in each node of the list. Here is my sum() function:
int sum(ListNode *ptr){ if (ptr->next) return (ptr->num + sum(ptr->next)); else return(0); }
where the initial arg passed through the ListNode * parameter is my head node (with null value). The output is fine until that point, then the program locks up and I get the "...has stopped working" error.
I have been asked to write three functions for a Liked List that can add remove and reverse the elements of the Linked List. Now, I have done the add function and It is displaying the elements properly using recursion function. But My removal function is not working and I tried all the possible logic I can think of, I dont know, where did I make mistakes.
This is My class for the Linked List
#ifndef __Linked_Lists_Recursive_function_Implementation___NumberList__ #define __Linked_Lists_Recursive_function_Implementation___NumberList__ #include <iostream> using namespace std;
I have a linkedList search function given and I am having a little trouble getting it to work. I've made a few attempts with no success. Given normal search code:
template <class Type> bool orderedLinkedList<Type>::search(const Type& searchItem) const { bool found = false; nodeType<Type> *current; //pointer to traverse the list
current = first; //start the search at the first node
[Code] .....
My attempt to make it a recursive search:
template <class Type> bool orderedLinkedList<Type>::search(const Type& searchItem) const { //bool found = false; nodeType<Type> *current; //pointer to traverse the list current = first; //start the search at the first node
1. Construct a class diagram that can be used to represent food items. A type of food can be classified as basic or prepared. Basic food items can be further classified as meat, fruit, veg or Grain. The services provide by the class should be the ability to enter data for new food, to change data for food and to display existing data about food.
using this class definition write a main program to include a simple menu that offers the following choices:
1. Add food 2. Modify Food 3. Delete Food 4. Exit this menu
2. Read a list of numbers from a file and then print them out in reverse order. State whether the list is palindromic or not.
I was assigned to reverse a unidirectional linked list in C, where I'm not allowed to make a copy of the given linked list, or to change the actual data.
The only thing I'm allowed to do is to manipulate the list's pointers. After doing some thinking and scribbling on a piece of paper, I came up with this:
Initialize three pointers: p1,p2,p3, for the first, second and third elements, respectively. p1->next=NULLwhile (p3 != NULL) do p2->next=p1p1=p2p2=p3p3=p3->nextp2->next=p1return p2 as the head of the reversed list
This is a pseudo code, of course, as I'm less interested in the actual implementation, and more about the algorithm itself. I was wondering if there's a more elegant way of doing this, since this gets quite complicated considering the cases where the list has less than three elements in it.
I am trying to create a linked list and then reverse it. So far I have created the link list however I am having difficulties figuring out the steps to reverse it. What is the logic behind reversing this linked list. I am not able to use recursion. I am supposed to create a copy of the linked list with the nodes reversed.
I have to write a c program that will allow the user to enter names with ages. The name will be no longer than 40 characters. The name and age should be stored in a node of a doubly linked list. I cant use global data. I need to use 3 subroutines. the first one needs to enter the data and pass the head and tail pointers to the subroutine. the next subroutine needs to print the names and ages to the screen and file output.txt from first to last. the last subroutine needs to print out names and ages to the screen and file output.txt from the last to first.
Im getting several errors when i try to run this program. The first subroutine to get the data from the user and build the double linked list. but i seem to be having issues.
#include <stdio.h> #include <stdio.h> #include <ctype.h> #include <string.h> int entry(char [][41], int []); // subroutine used for data entry // void printit(char [][41], int [], int); // subroutine used for data printing // void reverseprintit(char [][41], int [], int); // subroutine used for reverse data printing //
I am currently trying to add to a linked list in sorted order but I have reached an impasse. I can get it to add in sorted order if it belongs in the beginning or second in the list. If i were to type in 9 then 4 i would get 49, but if i type in 5 it changes it to 559. I'm just at a loss and need some sort of direction.
#include "singly_linked_list.h" #include <iostream> using namespace std; void add_node(node*& head_ptr, const int& payload){ if (head_ptr == nullptr) { node* my_node = new node(); my_node->data = payload;
At the line number 65 that's my sort method first i sum up all the value in the nodes after that i want to sort the Nodes In ascending order but the method is not working ...
#include <iostream> #include <conio.h> using namespace std; // Node Class
I need to make singly and doubly linked list classes that can insert elements. Once the lists are created, I need to order the linked list elements according to a certain pattern.
How to print a string in reverse order(for example: "today is Wednesday " to "Wednesday is today"). My professor said we should begin with a null string and build it one word at a time.
#include <iostream> #include <fstream> #include <string> using namespace std; int nwords(string);
I have two vectors of float that I need to sort in reverse order. reverse() seems to work for one of them, but not the other. I have toggled between sort() and reverse(). for one vector, the expected behavior is seen and the order reverses. For the other, there is no change in order.
This is very simple code, so it's hard to imagine what is going wrong.
You can see that the order of the first vector did not change. Am I right in suspecting that the numbers are too similar for what ever method reverse() uses to determine the difference between values?
The next step for my project is to take data from a file, and create a new file with the same data, but in reverse order. If a file has the following values:
1 2 3 4 5
The program should create a new file with the following values:
5 4 3 2 1
Seems pretty straight forward, yet I am hitting a snag when I try to compile my program:
The following errors occur when I try to compile the fore mentioned code:
intrev.c: In function 'main': intrev.c:25: warning: unused variable 'out' intrev.c: At top level: intrev.c:39: error: expected identifier or '(' before 'while'
[Code] .....
Now I am not concerned with "unused variable 'out'" as it is used, just in a for loop. Is this a problem?
I'm not entirely sure why it's giving me the error at line 39. I've gone over this a couple times and it doesn't look like I've missed any methods which need to be closed. Maybe I've missed something?
I'm also not sure why I am getting an error when I try to close the opened files. I've done this before in the same manner, but without errors. Not sure why I am now, but my guess is that it has something to do with the error on line 39.
I need fastest method to reverse order of bytes in my char array.
For example i have:
unsigned char buf[8]; // consider data stored in buf is 88 77 66 55 44 33 22 11 // how to reverse it to: 11 22 33 44 55 66 77 88 // currently i can do it by equal assignment , i make another buf like: unsigned char buf_ok[8];
[Code] ....
// This does reverse the bytes as i want but its very slow , i am looking for fast method ..
I am having to write a program that takes 2 sorted linked lists (x and y) and merge those to sorted into a third one (z). This has to be done via recursion. I think I am close but there is a logic error.