Всем привет! Нужна программа, которая будет создавать двунаправленный список с информационным полем char. Но в список нужно добавить численные значения 1,3,5 итд.. .Есть прога, но выводит абракодабру, подскажите знающие люди, в чем проблема, как изменить? ?
я как понял она только под integer работает, а при char с ума сходит.. .что и на что здесь изменить нужно? ?
сам плохо понимаю списки эти... (
вот прога моя: http://pastebin.com/1h5509h3
с уважением...
Другие языки программирования и технологии
C++ Двусвязные списки, работает не правильно программа
Всё очень плохо, с логикой, с освобождением памяти, с типами данных, с комментариями, с форматированием!
#include <stdlib.h>
#include <iostream>
using namespace std;
struct Node {
char x;
Node * Next, * Prev;
};
class List {
Node * Head, * Tail;
public:
List() : Head(NULL), Tail(NULL) { };
~List();
void Show()const;
void Add(char x);
};
int main () {
List list;
char ch;
const size_t size = 4;
for (size_t n = 0; n < size; n++) {
cout << " symbol > ";
cin >> ch;
list.Add(ch);
} cout << endl;
list.Show();
cin.get(); cin.get();
return 0;
}
List::~List() {
if (Head) {
Node * temp = NULL;
while (Head) {
temp = Head;
Head = Head->Next;
delete temp;
temp = NULL;
}
Tail = NULL;
}
}
void List::Add(char x) {
Node * temp = new Node;
temp->Next = NULL;
temp->x = x;
if (Head == NULL) {
Tail = Head = temp;
Tail->Prev = Head->Prev = Tail->Next = Head->Next = NULL;
} else {
Tail->Next = temp;
temp->Prev = Tail;
temp->Next = NULL;
Tail = temp;
}
temp = NULL;
}
void List::Show()const {
if (Tail != NULL) {
Node * temp = Tail;
do {
cout << temp->x << ' ';
temp = temp->Prev;
} while (temp != NULL);
cout << endl;
temp = Head;
while (temp != NULL) {
cout << temp->x << ' ';
temp = temp->Next;
}
cout << endl;
temp = NULL;
}
}
#include <stdlib.h>
#include <iostream>
using namespace std;
struct Node {
char x;
Node * Next, * Prev;
};
class List {
Node * Head, * Tail;
public:
List() : Head(NULL), Tail(NULL) { };
~List();
void Show()const;
void Add(char x);
};
int main () {
List list;
char ch;
const size_t size = 4;
for (size_t n = 0; n < size; n++) {
cout << " symbol > ";
cin >> ch;
list.Add(ch);
} cout << endl;
list.Show();
cin.get(); cin.get();
return 0;
}
List::~List() {
if (Head) {
Node * temp = NULL;
while (Head) {
temp = Head;
Head = Head->Next;
delete temp;
temp = NULL;
}
Tail = NULL;
}
}
void List::Add(char x) {
Node * temp = new Node;
temp->Next = NULL;
temp->x = x;
if (Head == NULL) {
Tail = Head = temp;
Tail->Prev = Head->Prev = Tail->Next = Head->Next = NULL;
} else {
Tail->Next = temp;
temp->Prev = Tail;
temp->Next = NULL;
Tail = temp;
}
temp = NULL;
}
void List::Show()const {
if (Tail != NULL) {
Node * temp = Tail;
do {
cout << temp->x << ' ';
temp = temp->Prev;
} while (temp != NULL);
cout << endl;
temp = Head;
while (temp != NULL) {
cout << temp->x << ' ';
temp = temp->Next;
}
cout << endl;
temp = NULL;
}
}
Не хочу вникать в программу, пока простое пояснение по типу char: char - это 1 байт, причем математическими функциями он воспринимается как число от -128 до 127, а функциями, работающими с символами - как символ с соответствующим кодом. Например,
cout << char( 'A'+1);
выведет символ B, поскольку код символа B на 1 больше кода символа A. Записи 'A' и char(65) на C/C++ идентичны!
А теперь посмотрим, что ты делаешь:
cout << temp->x << " "; //Выводить значение на экран
А выводишь ты.. . символ с кодом temp->x! Если хочешь выводить значение, делай
cout << int(temp->x) << " ";
или (строго)
cout << static_cast< int>(temp->x) << " ";
cout << char( 'A'+1);
выведет символ B, поскольку код символа B на 1 больше кода символа A. Записи 'A' и char(65) на C/C++ идентичны!
А теперь посмотрим, что ты делаешь:
cout << temp->x << " "; //Выводить значение на экран
А выводишь ты.. . символ с кодом temp->x! Если хочешь выводить значение, делай
cout << int(temp->x) << " ";
или (строго)
cout << static_cast< int>(temp->x) << " ";
Похожие вопросы
- /*разработать программу для создания и работы с двусвязным списком, состоящим из структур.
- Зачем в C++ используют такой неудобный порядок оформления программ?
- Помогите написать правильно программу в С, мой вариант не работает
- Написал калькулятор на c++ он не работает вот код
- Как работает процессор? Писать программу на разных языках почему приходится?
- C++ Помогите, не работает перегрузка
- Посоветуйте устанавливать ли мне windows 7 x32 или x64 (что лучше будет?). Будет ли она работать нормально с программами
- Спам реклама работает как вирус программы?
- Мне нужен ноут, для того, чтоб работать с дизанерскими программами, помогите выбрать???
- Почему не работает моя делфи-программа которая при прокрутке колесика мышки должна была менять число в эдите?