使用类的 c++ 方法的链表

Posted

技术标签:

【中文标题】使用类的 c++ 方法的链表【英文标题】:Linked list using the c++ approach of classes 【发布时间】:2016-09-27 14:41:20 【问题描述】:

问题是,虽然在链表中添加数据很好,但是当我们从列表中搜索某些内容时,它说列表是空的 但是如果我初始化这个

struct student * head = NULL;
struct student * curr = NULL; 

在课堂之外,它可以正常工作是我的方法正确还是我们不能这样做?

#include <iostream>

    using namespace std;

    struct student
    int data = -100;
    student * next;
    ;

    class linkedlist
     struct student * head = NULL;
     struct student * curr = NULL;

    public:
    void insertitem()
    
       if(head == NULL)
       struct student * temp = new student;
       head = temp;
       curr = temp;
       temp->next = NULL;
       cout << "Enter the data" << endl;
       cin >> temp->data;
    
       else if(head != NULL)
           struct student * temp = new student;
           curr->next = temp;
           curr = temp;
           temp->next = NULL;
           cout << "Enter the data" << endl;
           cin >> temp->data;
       
    

    void searchitem(int x)
    
        student * temp = new student;
        temp = head;
        if(temp != NULL)
        

         while(temp->data != x)
          
            temp = temp->next;  //Traversal

            if(temp == NULL)
                break;
             

          
        
        if(temp != NULL)
        
            cout << "found" << endl;
            cout << temp->data << endl;
        

        else
            cout << "Not found" << endl;
        
    

    ;

    int main()
    
      int x = -100;

      while(x != 0)
      cout << "--------------------" << endl;
      cout << "Enter 1 -- Insertion" << endl;
      cout << "Enter 0--- Terminate" << endl;
      cout << "--------------------" << endl;
      cin >> x;

      linkedlist l1;

      switch(x)
      
      case 1:
           l1.insertitem();
        break;
      case 2:
           l1.searchitem(6);
        break;
      
      
        return 0;
    

【问题讨论】:

您在每次调用 searchitem 时都在泄漏一个学生,并且您的列表最多可以包含两个元素,尝试插入第三个元素会泄漏尾部。你想通过这门课达到什么目的? 对此有用的调试技术是构造函数/析构函数日志记录。你会看到东西在不应该的时候被建造,尤其是被毁坏。你会看到构造的比破坏的多。 在 C++ 中,声明变量时不需要 structclass 关键字。仅类型名称就足够了。 在您的insertitem 函数中,您不需要else if 中的if,因为else 表示(head != NULL) insertitem函数中有重复语句。我建议你在if 之前或else 末尾之后移动一些。您希望防止重复代码,因为这会增加您的开发时间(打字和调试)。 【参考方案1】:

您将在每次迭代中创建一个新的linkedlist

将声明移出循环。

【讨论】:

以上是关于使用类的 c++ 方法的链表的主要内容,如果未能解决你的问题,请参考以下文章

一文讲透链表操作,看完你也能轻松写出正确的链表代码

一文讲透链表操作,看完你也能轻松写出正确的链表代码

salesforce零基础学习(七十八)线性表链形结构简单实现

c++实现单向单链表及常见面试题

利用java实现一个简单的链表结构

线性表-顺序表链表类模板的实现(数据结构基础 第2周)