Quelqu'un peut-il m'aider à comprendre cela. J'ai un projet de classe où je devais programmer un Bill Casewell dans la classe et la liste chaînée. Je ne peux pas comprendre jusqu'à ce que j'ai trouvé ce lien. Il sort très awesomely, mais Idk comment ajouter une entrée d'utilisateur de cin >>, comme le nombre d'adultes et calcule le total de nourriture. J'ai essayé de le réparer mais cela ne fonctionne pas correctement http://www.sourcetricks.com/2008/07/c-singly-linked-lists.html#.WYzSxneGOHoSimple programme C++ avec la classe et la liste liée
// ---------------------------- ---------
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
class List
{
private:
int number;
char* word;
List* next;
public:
void inserts(int num, char* text);
void removes(int num);
void print();
};
List* first;
void List::print() {
cout <<"This is our list:"<<endl;
// Temp pointer
List *tmp = first;
// No nodes
if (tmp == NULL) {
cout << "EMPTY list" << endl;
return;
}
// One node in the list
if (tmp->next == NULL) { //on the first node of the list
cout <<"NUMBER:\t "<< tmp->number;
cout <<"\tWORD:\t"<< tmp->word << endl;
cout <<"--------------------------------"<<endl;
}
else {
// Parse and print the list
while (tmp != NULL){ //the rest of the list
cout <<"NUMBER:\t"<< tmp->number;
cout <<"\tWORD:\t"<< tmp->word << endl;
cout <<"--------------------------------"<<endl;
tmp = tmp->next;
}
}
}
void List::inserts(int num, char* word){
// Create a new list
List* newlist = new List;
newlist->number=num;
newlist->word=word;
newlist->next=NULL;
// Create a temp pointer
List *tmp = first;
if (tmp != NULL) {
// Nodes already present in the list
// Parse to end of list
while (tmp->next != NULL) {
tmp = tmp->next;
}
// Point the last node to the new node
tmp->next=newlist;
}
else {
// First node in the list
first = newlist;
}
}
void List::removes(int num){
int k = 0;
List* tmp=first;
if(tmp==NULL) {
return;
//Last node of the list
}
if (tmp->next == NULL && tmp->number==num) {
delete tmp;
first = NULL;
}
else {
//Parse thru the nodes
List* prev;
prev = new List;
while (tmp != NULL) {
if (tmp->number == num && k == 0) {
first = first->next;
}
if (tmp->number == num){
break;
prev = tmp;
tmp = tmp->next;
k++;
}
}//end of while
//Adjust the pointers
prev->next=(tmp->next);
//Delete the current node
delete tmp;
delete prev;
}//end of else
}//end of void remove
int main()
{
first->print();
first->inserts(1200,"endian");
first->print();
first->inserts(10,"endianness");
first->inserts(1200,"PEEK");
first->inserts(1200,"POKE");
first->inserts(1200,".MIL");
first->print();
first->removes(100);
first->print();
getchar();
}
et sorties avec des avertissements
5 warnings generated.
This is our list:
EMPTY list
This is our list:
NUMBER: 1200 WORD: endian
--------------------------------
This is our list:
NUMBER: 1200 WORD: endian
--------------------------------
NUMBER: 10 WORD: endianness
--------------------------------
NUMBER: 1200 WORD: PEEK
--------------------------------
NUMBER: 1200 WORD: POKE
--------------------------------
NUMBER: 1200 WORD: .MIL
--------------------------------
C'est beaucoup de code mal dentelée. Vous prenez des contributions à un endroit, pourquoi ne pouvez-vous pas en ajouter d'autres? –
La façon dont vous essayez d'utiliser 'Node.number' suggère que vous devriez relire les premiers chapitres de votre manuel. C++ n'est pas un langage tolérant pour les non préparés. – user4581301
int nombre cout << "Ajouter un nombre \ n"; cin >> numéro; double produit = nombre * 2; liste.Append (nombre); list.Print(); liste.Append (produit); list.Print(); –