# Thread: Setting String equal to char array?

1. May I recommend structuring the linked list code into functions.

Anyway, there's no reason to make the list doubly linked. Your assignment says that you need a stack and a queue implemented as linked lists. All you need is a linked list where you can push a new value onto either end, and the ability to read and pop one end.

2. I got the equations to get inserted into the linked list. Now I will work on making the code easier to read. I was initially thinking of making the doubly linked list because input members in the stack would be inserted in reverse order. But I ended up making another stack(making stacks were a little more simple than making a queue although a bit more inefficient) which copied in the data from the first stack. Now when I print what I enter, it is in the correct order. Here is my current working code, I will modify it in due time.

Here is the code:

Code:
```#include <iostream>

using namespace std;

struct node
{
float num;
char opr;
char type;
node* next;
node* prev;
};

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[]);

int main()
{
node *temp = 0, *head = 0;//starts out empty
node *PQt = 0, *PQh = 0, *PQp = 0;//Polish queue
float fltval;
int j, n = 0, flag, count = 0;
char string[80];

cout << "Enter an algebraic equation in reverse polish notation: \n";
cin.getline(string, 80);

cout << "Output from func arrayToInt:\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(flag == 0)//if part consists of int
{
if(string[n] != '\0')
{
fltval = arrayToFloat(part);//converting array based number to float
cout << fltval << endl;

head = new node;
}//if
}//if
else
{
if(string[n] != '\0')
{
head = new node;
}//if
}//else

}//while

//PQh = PQInit(head, PQh);
cout << "Output from linked list:\n";

//creating PQ stack from initial array
{
PQh = new node;
{
PQh->type = 'N';
PQh->next = PQt;
PQt = PQh;
}//if
else
{
PQh->type = 'O';
PQh->next = PQt;
PQt = PQh;
}//else

}//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```
When I originally started working on making the second stack, I was working on it in a separate function, but I got a ton of errors and just decided to get it working first in main. Just be ware this is very dated function, I am better off copying what I have in main into the function rather than this. I am posting this so you guys can see if I did anything wrong and so you can correct me before I update this function. Any tips to help me with this will be appreciated. Here is the (commented out) function code:

Code:
```/******************************************/
//Initializes PQ
/*
entry* PQInit(entry* h, entry* PQh)
{
node* head = h;

while(h->next != 0)
{
if(h->type == 'N')
else