2015-10-11 28 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中,我不知道你的意图在这里,但没有称为“文件”的功能。尝试搜索该文字,然后您会看到。