使用类的 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++ 中,声明变量时不需要struct
或 class
关键字。仅类型名称就足够了。
在您的insertitem
函数中,您不需要else if
中的if
,因为else
表示(head != NULL)
。
insertitem
函数中有重复语句。我建议你在if
之前或else
末尾之后移动一些。您希望防止重复代码,因为这会增加您的开发时间(打字和调试)。
【参考方案1】:
您将在每次迭代中创建一个新的linkedlist
。
将声明移出循环。
【讨论】:
以上是关于使用类的 c++ 方法的链表的主要内容,如果未能解决你的问题,请参考以下文章