Hey guys, I am currently trying to get my program to implement a linked list by invoking a function, but garbage is always thrown out whenever I execute it. Here is a link describing more of my programming project (scroll down a bit):
Setting String equal to char array?
I have tried debugging, to no avail, I cannot figure out why it is feeding me garbage. I made a similar program which inserted and deleted nodes via functions and it had no problem. I have copied that method and for some reason this program messes up.
Here is my code:
Thanks in advance for any help!Code:#include <iostream> using namespace std; struct node { float num; char opr; char type; node* next; }; void printList(const node*); //entry* insert(int n, node* h); //entry* deleteNode(int n, node* h); //entry* PQInit(entry* h, entry* PQh); float arrayToFloat(char part[]); node* tempArray(node* head, char string[], char part[], int flag, int stringFlag); int main() { node *temp = 0, *head = 0;//starts out empty node *PQt = 0, *PQh = 0;//Polish queue //float fltval; int j, n = 0, flag, count = 0, stringFlag = 0; char string[80]; cout << "Enter an algebraic equation in reverse polish notation: \n"; cin.getline(string, 80); cout << "Output from func arrayToFloat:\n"; while(string[n] != '\0') { char part[15] = {'O'}; for(j = 0, flag = 0; (string[n] != ' ') && (string[n] != '\0'); j++, n++) { part[j] = string[n]; if(!isdigit(part[j]))//if character { flag = 1; }//if }//for n++; if(string[n] != '\0') stringFlag = 1; else stringFlag = 0; head = new node; head = tempArray(head, string, part, flag, stringFlag); }//while //PQh = PQInit(head, PQh); cout << "Output from linked list:\n"; printList(head); //creating PQ stack from initial array while(head != 0) { PQh = new node; if(head->type == 'N') { PQh->num = head->num; PQh->type = 'N'; PQh->next = PQt; PQt = PQh; }//if else { PQh->opr = head->opr; PQh->type = 'O'; PQh->next = PQt; PQt = PQh; }//else head = head->next; }//while cout << "Output from PQ: \n"; printList(PQh); return 0; }//main /***************************************/ //Prints list of Nodes void printList(const node* pointer) { while(pointer != 0) { if(pointer->type == 'N') cout << pointer->num << " "; else cout << pointer->opr << " "; pointer = pointer->next; }//while cout << endl; }//printList /****************************************/ //Converts an array of ints to a float value float arrayToFloat(char part[]) { int L = 0, i, j; float val = 0, value[15] = {0}; float valtab[5] = {1, 10, 100, 1000, 10000}; // 1 2 3 4 5 for(i = 0; part[i]; i++) { value[i] = part[i] - '0';//converting to int from char }//for L = strlen(part); for(i = 0, j = L - 1; i < L; i++, j--) { val = val + (value[i] * valtab[j]); }//for return val; }//arrayToFloat /******************************************/ //Initializes PQ node* tempArray(node* head, char string[], char part[], int flag, int stringFlag) { float fltval; node* temp = 0; node* h = head; if(flag == 0)//if part consists of int { if(stringFlag == 1) { fltval = arrayToFloat(part);//converting array based number to float cout << fltval << endl; //h = new node; h->num = fltval; h->type = 'N'; h->next = temp; temp = h; }//if }//if else { if(stringFlag == 0) { //h = new node; h->opr = part[0]; h->type = 'O'; h->next = temp; temp = h; }//if }//else return h; }//tempArray



LinkBack URL
About LinkBacks




.