2015-10-11 51 views
-3

我試圖通過添加,搜索,刪除和打印功能實現鏈接列表。但我不斷收到「搜索,打印和文件未在此範圍內聲明」的錯誤,並且ISO C++禁止在指針和整數[-fpermissive]錯誤之間進行比較。任何幫助,將不勝感激。執行具有以下功能的鏈接列表程序

#include <iostream> 
#include <stdio.h> 
#include <string> 
using namespace std; 

struct node 
{ 
    public: 


    char name; 
    node *next; 

}; 

bool isEmpty(node *head); 
char welcomeScreen(); 
void addInitialElement(node *head, node*last, char name); 
void add (node *&head, node *&last, char name); 
void serach (node *current); 
void remove (node *&head, node *&last); 
void printFile(node *current); 


bool isEmpty(node *head) 
{ 
    if(head == NULL) 
     return true; 
    else 
     return false; 

} 
char welcomeScreen() 
{ 
    char options; 

    cout <<"Address Book \n"; 
    cout <<"Available Commands \n"; 
    cout <<" add <name>. \n"; 
    cout <<" search <name>. \n"; 
    cout <<" remove <name>. \n"; 
    cout <<" print \n"; 
    cout <<" file <filename>. \n"; 
    cout <<" quit \n"; 

    cin >> options; 
    return options; 

} 
void addInitialElement(node *head, node*last, char name) 
{ 
    node *temp = new node; 
    temp->name = name; 
    temp->next = NULL; 
    head = temp; 
    last = temp; 
} 
void add (node *&head, node *&last, char name) 
{ 
    if(isEmpty(head)) 
     addInitialElement(head, last,name); 
    else 
    { 
     node *temp = new node; 
     temp->name = name; 
     temp->next = NULL; 
     last->next = temp; 
     last = temp; 

    } 
} 
void serach (node *current) 
{ 
    node *temp = new node; 


    if (current->name == temp) 
    { 
     cout << "The List Contains the Following: \n"; 

     while(current != NULL) 
     { 
      cout<< current->name <<endl; 
      current = current->next; 
     } 
    } 
} 
void remove (node *&head, node *&last) 
{ 
    if(isEmpty(head)) 
     cout << "ERROR: Not found for Removal. \n"; 

    else if(head == last) 
    { 
     delete head; 
     head == NULL; 
     last == NULL; 
    } 
    else 
    { 
     node *temp = head; 
     head = head->next; 
     delete temp; 
    } 
} 
void printFile(node *current) 
{ 
    if(isEmpty(current)) 
    cout << "NO NAME IN LIST. \n"; 

    else 
    { 
     cout << "The List Contains the Following: \n"; 

     while(current != NULL) 
     { 
      cout<< current->name <<endl; 
      current = current->next; 
     } 
    } 


} 

int main() 
{ 
    node *head = NULL; 
    node *last = NULL; 
    char options; 
    char name; 

    do{ 
     options = welcomeScreen(); 

     switch(options) 
     { 
     case '1': cout <<"please add a name: "; 
        cin >> name; 
        add(head, last, name); 
        break; 

     case '2' : search(head, last); 
        cin >> name; 
        break; 


     case '3' : remove(head, last); 
        break; 

     case '4' : print(head); 
        break; 

     case '5' : file(head); 
        break; 

     default: cout << "system exit \n"; 
     } 

    }while(options != '6'); 

} 
+1

您已在函數聲明和原型拼寫'search'錯誤,並宣佈'printFile'而是叫'print'和主要 – bitfiddler

+0

'file'你聲明「名」是char類型。這可能不是你想要的。 –

+0

if(current-> name == temp) – Ghostman

回答

0
  1. 你拼寫錯誤。在「serach」上查找/替換。
  2. 在情況4,您可能意味着調用,而不是打印

    情況下printFile '4':printFile(頭);

  3. 在情況5中,我不知道你的意圖在這裏,但沒有稱爲「文件」的功能。嘗試搜索該文字,然後您會看到。