// Exempel på enkelriktad länkad lista
// Enda saken som syns och sparas är "name"
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class node {
public:
string name; //namnet som skall sparas
node *next; //Pekare till nästa post i kön
node(string aName) //Konstruktor
{
name = aName; //namnet som matas in vid new
next = NULL; //Finns ingen efter om den läggs sist
}
};
int _tmain(int argc, _TCHAR* argv[])
{
node *root = NULL; //första noden i listan
node *p_node; // pekare som går fram och tillbaka i nod kön
node *new_node; // pekare till ny nod
string a_name; //namnet som skall in
while (true)
{ //Så länge man inte aktiverat "break"
cout << "Skriv in ett namn (eller ENTER för att avbryta): ";
getline (cin, a_name); //a_name skrivs in
if (a_name.empty()) //Om det är en sträng utan bokstäver
break; //while blir false
new_node = new node(a_name); //finns text skapas en ny nod
//Om listan är ny eller noden är den första,
//sätts den in som root nod, annars:
//sök efter sista noden i listan och placera in den efteråt
if (root == NULL || (a_name < root->name))
{
new_node->next = root; //Placeras som första noden = root
root = new_node; //new_node skapas som försdta medlemmen i kön.
}
else //det finns mer än en nod i listan
{ //else
new_node->next = p_node->next; //Gå till nästa
p_node->next = new_node;
} //slut else
} //slut while true
p_node = root; // Skriv ut alla noderna från första posten
while (p_node) //Så länge det finns noder
{
cout << p_node->name << endl; //skriv ut namnet
p_node = p_node->next; //Gå till nästa
}
return 0;
}