C :: Merge Sorting The Linked Lists - Runtime Error
Aug 10, 2013The following program throws runtime error.
Code:
#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
struct node *next;
[Code] .....
The following program throws runtime error.
Code:
#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
struct node *next;
[Code] .....
i write code that's merge two linked list without sort ....
node * merage (node * list1, node * list2) {
// check witch list is empty
if (list1 == NULL) return list2;
if (list2 == NULL) return list1;
if ( list1 == NULL && list2 == NULL ) return NULL;
[Code].....
I am getting an error trying to convert from nodeType<Type> to nodeType<Type>* in my recursiveSort function and why this is happening.
#ifndef H_linkedListIterator
#define H_linkedListIterator
#include <iostream>
template <class Type>
struct nodeType {
Type info;
[Code] ....
# include <iostream>
# include <vector>
# include <cstdio>
# include <algorithm>
# define inf 100000
using namespace std;
int cnt;
vector<int> merge( vector<int>& left, vector<int>& right) {
[Code] ....
void search(int srch) {
if (isempty()) {
cout<<"No Record Found";
} else {
node *p;
p=head;
while(p!=NULL || p->getroll_no()==srch)
[Code] ....
I'm trying to write a function that takes two linked lists and creates a third one with only the common elements.
It assumes the first list (the caller) has no dups, but it doesn't seem to be working. The program doesn't crash, it just hangs when it is supposed to display L3 (the third list)..everything else runs and is displayed fine.
template <typename T>
LList <T> LList <T>:: common (LList <T> &B)//common fct
{
Node <T> *hunter1 = Head;
[Code]......
I'm trying to sort a deck from file with merge sort.I have all my code working except merge sort function .
#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int temp;
int br = 1;
[Code] ....
My assignment is to make a program that tests whether something is a Palindrome or not using a recursive function. Also, in order to test what type the Palindrome is (if it is indeed a palindrome) I'll need to merge sort it. Now alphabet characters, spaces, and numbers are all allowed, as long as the spaces line up with the spaces in the original input. And yes this is user inputted. I can show you what I've got so far and then I'll tell you what my problem is.
#include <iostream>
#include <istream>
#include <string>
#include <string.h>
#include <conio.h>
using namespace std;
/************To Test if Palindrome*******************/
bool IsPalindrome(char *str, int size) {
if( str[0] == str[size-1]);
[Code] .....
Now my problem is that I can't seem to get the test to work correctly. Since the word is user inputted I don't have any way of knowing the size so that kind of complicates it a little bit. The other thing is I was told by my professor that I need a boolean flag to make it work, and I need to set the value to the return of the IsPalindrome function. I'm not sure how to do that. I also don't haven't been able to add in the MergeSort yet, so the Order and Type don't really work correctly because I'm not sure how to get int len for it. (len is length)
This is in response to the bubble sort and selection sorts for linked lists. On my system, (Intel 2600K, 3.4ghz), it sorts a list with 4,194,304 nodes containing 64 bit unsigned integers in about 1.05 seconds.
Code:
#define NUMLISTS 32
/* number of lists */
typedef unsigned long long UI64;
typedef struct NODE_{
struct NODE_ * next;
UI64 data;
[Code]....
This is in-place merge sort, for merge function.
LinkedListNode::LinkedListNode(int value) {
this->next = NULL;
this->value = value;
}
LinkedListNode *mergeSortedLinkedLists(LinkedListNode *firstList, LinkedListNode *secondList)
[Code] ....
I'm trying to set up a simple implementation of a double linked list. I can't make it fly.
Code:
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
[Code] ...
I seem to create a root vertex, but I can't establish if I connect sub nodes to my list.
I am merging two linked list but the output of the program is not printing insert
Code:
typedef struct Merge
{
int info;
[Code].....
In our homework assignment it states to, "write a set of dynamic linked lists" and so on. Now, the problem I'm confusing myself is at the storage inside of each node. To my understanding, each node contains the prev and next nodes, but also a pointer to the data, in this case being a string. He has asked us to manage these strings as rows of chars such as
char[0] = c // first node being addressed here
char[1] = a
char[2] = t
char[3] =
char[4] = d // second node starting here
char[5] = o
char[6] = g
char[7] =
I have written my code where each node is holding a string, not separated as shown above... my question is to how you can build your doubly linked list where each node is being address a set of chars.
I created a bunch of nodes and I made each one before one another. Im having trouble adding another node to the last one.
#include <iostream>
using namespace std;
struct nodeType{
int info;
nodeType *link;
};
void printList(nodeType *head) {
nodeType *current = head;
[code]....
The node with the value of 400 is the node that has to be last.. How would that work?
I'm trying to do is let the user type in something like A654321 (note: these are ALL the characters, i.e. 'A', '6', '5', '4', etc..) Then I just want to display that current number back to them and I am getting some weird pointer memory allocation error..
#include<iostream>
using namespace std;
//To rename data-type "int" or integer to "element" (Both are equivalent)..
typedef int element;
//To declare an appropriate SENTINEL.
char const SENTINEL = '#';
[code]....
It seems like the first part that it bugs out at is in my Clean(); function..
Unhandled exception at 0x01383FBB in VegMe.exe: 0xC0000005: Access violation reading location 0xCCCCCCD0.
It doesn't like head = head->next; ?Also, ignore the ReverseList(); function, it is not being used as of now.
I am having some trouble getting a 3d array of pointers to link up with a linked list for each of the array elements. the 3d array of pointers is declared like this:
Code:
struct particle *cell[MAXCELLS][MAXCELLS][MAXCELLS]; and there are linked lists declared like this:
Code: struct particle { /* structure for particles */
double sw[3]; /* square well components */
double hs[3]; /* hard sphere components */
double u[3]; /* unit vector for rotations */
struct particle *link;
};
I want to get the array pointers 'cell[x][y][z]' to point to the first observed particle in a function next to main, something like this:
Code:
void generate_list(){
int i,j,k,l;
/* determine the number of cells to decompose the simulation box in each of x, y and z directions*/
int(cells_x) = floor(boxX/cell_size);
int(cells_y) = floor(boxY/cell_size);
int(cells_z) = floor(boxZ/cell_size);
/* initialise the array of pointers to NULL */
for (j=0;j<cells_x;j++){
[Code]...
I am getting a pointer type cast error when I compile "assignment from incompatible pointer type",
I have to write a program that reads from a text file, which contains a list of stock hourly prices and the company names. Something like this:
78.52 82.56 75.10 71.97 Water Company
22.40 25.68 21.37 22.96 Mega Shipping Inc
Each company data will be kept in a structure that contains: a pointer for the name, an array of the prices, and the average price for the day. The structures will be kept in a linked list. Each node structure will contain a pointer to one company data, and a pointer to the next node structure.This is all I have so far..
Code:
typedef struct {
char *companyName;
double hourlyPrices[NUM_PRICES];
double avgPrice;
} COMPANYDATA;
}
[code]...
We have to sort the nodes alphabetically. My question is, how do I read the data from the file one line at a time, and insert them alphabetically one by one?
I'm trying to compare a single value with a value from my Linked list and if they are same, I want to add the value from the list to new list. In other words I want to create a new List with values with the first one. Here is the code that I made, but it's not working.
This is the code with which I search in the first list for a node with a value. In the main() function I have A.find_city(), so it can start from the start_pointer from the first list:
void List::find_city() {
List *temp1;
int b = 0;
char city[20];
cout << "Enter city: ";
cin >> city;
temp1 = start_ptr;
[Code] ....
This is the code with which I add a node to the new list:
void List::in(List *temp1) {
List *temp2;
if(start_ptr == NULL)
start_ptr = temp1;
[Code] ....
I have this code that I need to memorize for my final. Memorizing code is easy for me, but I'm trying pretty hard to fundamentally understand the functions, and what they are doing (even using pen and paper, to draw and trace).For example, in the push function below, I understand everything, except why I'm setting ptr = p. I feel like p should be equal to NULL, then the next node I push should be equal to p, etc.
Stack & Stack::push(double x)
{
Node * p = NULL;
try
{
p = new Node;
}
[code].....
Also, are LL Queues that hard to implement once you can do them w/stacks - That will probably be something I have to code for my final, as well. Below is the full code for my Stack class.
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
class Stack
}
[code]....
A static method named readFromFile that takes a C-string as the first parameter, and an orderedLinkedList<MemberDO> object as the second parameter. The first argument is the filename that contains data for existing members. This method should read the data for each individual member from the input file (one line of data per member), create a new MemberDO object, and insert this object into the linked list specified in the second argument.
How do I take the second parameter in, do I need to create the Linked List first? Here is the code I have so far
#include<iostream>
#include<string>
#include <fstream>
using namespace std;
class MemberDO {
[Code] ....
What to do with the readFromFile static method?
Can we compare vectors with linked lists?
View 4 Replies View RelatedSo I have a Class named Subject, wich I used linked list to keep the objects. Now I have another Class called Tests which I should register a test by the Subject class, so I made a search like this:
List obj; //it's the object to access the List class, which manipulates the
//nodes from Subject.
obj.currentPtr=obj.firstPtr;
while (obj.currentPtr!=NULL) {
if(obj.currentPtr->nameSubject==value) //searching if there's a
return obj.currentPtr; //name equal to provided
obj.currentPtr=obj.currentPtr->nextPtr;
}
return 0;
I've made a similar process for Subject. But in this when I access the firstPtr, it's shown to be 0, once I have already the list of Subject and it should not be zero. What's wrong?
The objective of the project is to become familiar with linked lists by writing a series of basic functions that allow us to manipulate a set of linked lists. I've completed all of the functions except for one.
The function I am stuck on is supposed to do the following:
concatenates list1 and list2 to form a new list,
and returns a pointer to this new list;
Note: new list contains copies of all nodes in list1 and list2 */
The assignment is apparently pretty classic: given a starting state and a goal state, show the optimal path to solve a 3x3 sliding puzzle.
I have the code in place.Where I'm experiencing major issues is in maintaining two distinct linked lists. One should contain the frontier of the A-star algorithm and the other records the optimal path. In execution, however, it seems that only one list is in local memory in any one function. Therefore, when my function recurses, the lists begin to get confused and the whole algorithm veers off course.
Here is my structure definition in list.h:
typedef struct node {
int value;
int state[3][3];
struct node *next;
} Node;
typedef struct list {
int count;
Node *first;
} List;
Here is my List_create function in list.c (do I need malloc here?):
void List_create(List *list)
{
list->first = NULL;
printf("LIST CREATED
");
}
And here's how I'm declaring the lists in main.c:
int main(void)
{
List open;
List closed;
List_create(&open);
List_create(&closed);
Here's the general flow of the program, without posting a wall of code: both lists are passed to another function in main.c, expand(), with this line:
expand(current, gState, &open, &closed);
The lists are later passed from expand() to another main.c function, generateOptions(), in this line:
generateOptions(&array, goalState, open, closed);
generateOptions() returns back to expand(), which recurses on itself with the first item in the open list and continues the expansion:
expand(open->first, goalState, open, closed);
Strangely, the open list prints out correctly before generateOptions() returns to expand(), and the closed list prints out correctly after generateOptions() returns to expand(). But when I try to print the open list in expand(), I'm instead given the closed list. Like I said at the outset, it appears that only one list exists at a time!
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.
Code:
void SortedMergeRecur(Node*& xHead,Node*& yHead,Node*& zHead)
{Node* temp = 0;
if(xHead == 0) {
zHead = yHead;
yHead = 0;
}
[Code]...
Anyway, I have an assignment in which I'm supposed to create a program to be used in a library. Basically a database storing all books currently outside the library along with who and when borrowed them. It also says I should use single linked lists.
Now, I've got a general idea of how to make it work but I've stumbled upon a problem. Since the program has to write all the data put into the database in a file and be able to tell the user whether a book has been kept too long by the reader, I figured I'd implement the struct tm to convert the date when the book was borrowed (or rent, whatever, English is not my first language ;p) into UNIX time.
Then, when I'd like the program to tell me which books are being kept hostage by the readers the program would look for a certain record (like a string inside a certain struct) and compare the date inside that record with current date and then the result of this comparison would be compared with a given, defined time limit. Although this is all a different kinda function, it's a bit simplier, I guess, and I think I'll work it out. However to get there at all I need to be able to store the data correctly and there is a problem, which I'll explain on the other end of the code .Here is the code I came up with:
Code:
#include <stdio.h>#include <string.h>
#include <stdlib.h>
#include <time.h>
int DisplayMenu();
int ReturnToMenu();
int AddBooks(char *filename);
[Code] ....
So, my problem is as follows: the date seems to be stored alright, but it's wrong. For checking I had a Code: printf("%d", mktime(&date)"); added and it returned "-1"... As I said, I'm relatively new to coding/programming and my knowledge is rather rudimentary.
By the way: I had one more gremlin haunting me on this one. Namely at the begining of the input to the AddBooks function:
Code:
int flag = 0; do
{
printf("Please type in the book's title:
");
gets(newbook.title);
if (strcmp(newbook.title, "") == 0)
[Code] ....
The do while loop is to ensure 'unempty' input. Without this loop however, the program would display the message "Please type in the book's title:" but it wouldn't wait for input. It's simply jump to the next printf and wait for input then... I figured it might be becuase it took the 'Enter' that was somehow still in the memory after the user confirms his selection in the menu... It's just a guess, though.