2016-11-21 6 views
-3

derzeit auf meinem Projekt arbeiten, und Schlurfen ist die letzte Funktion i schreiben müssen, aber ich bin verwirrt, und ich weiß nicht, wieschlurfenden eine verkettete Liste Stapel

jemand hier kann mir helfen? Danke trotzdem !

so hier ist meine Klasse

// Creating a NODE Structure 
struct node 
{ 
    int data; 
    struct node *next; 

}; 


// Creating a class STACK 
class tumpukan 
{ 
    struct node *top; 
    public: 
    tumpukan() // constructure 
    { 
     top=NULL; 
    } 
void push(int x) 
{ 
    struct node *ptr; 
    ptr=new node; 
    ptr->data=x; 
    ptr->next=NULL; 
    if(top!=NULL) 
    ptr->next=top; 
    top=ptr; 
} 



int pop() 
{ 
struct node *temp; 
    if(top==NULL) 
     { 
      printf("Tumpukan Kosong \n"); 
     } 
temp=top; 
top=top->next; 
return temp->data; 
delete temp; 
} 



void show() 
{ 
    struct node *ptr1=top; 
    printf("isi tumpukan : \n"); 
    while(ptr1!=NULL) 
    { 
    cout<<ptr1->data<<" ->"; 
    ptr1=ptr1->next; 
    } 
    printf("NULL \n"); 
} 

}; 

jede Hilfe ist willkommen!

+1

Warum würden Sie einen Stapel mischen wollen? Der Punkt eines Stapels besteht darin, die FILO-Ordnung beizubehalten, wobei schlurfende Niederlagen diesem Zweck dienen. – lcs

+1

Mögliches Duplikat von [Zufälliges Mischen einer verknüpften Liste] (http://stackoverflow.com/questions/23094055/randomly-shuffling-a-linked-list) –

+0

Bitte präzisieren Sie die tatsächlichen Anforderungen. Warum werden Sie von Grund auf neu implementiert, anstatt Konzepte zu verwenden, die leicht Teil der Sprache sind? Schließlich muss Ihre Implementierung noch funktionieren (z. B. stürzt Ihre Pop-Methode nach dem Drucken von "Empty Stack" immer noch ab) –

Antwort

0

Sie können einen Vektor erstellen, der die Adressen aller Knoten enthält, ihn V nennen und eine Reihe von Indizes von 1 bis N erstellen (N ist die Anzahl der Knoten), nennen Sie es I. Erstellen Sie einen leeren Stapel S. Jetzt: (psuedocode)

for i in range 1 to V.size(): 
    index=I.pick_at_rand() // you can easily find these sort of functions 
    I.delete(index) 
    if(S.top!=NULL): 
     V[i].next=S.top 
     S.push(V[index]) 
    else: 
     S.push(V[index])