我从未学过课,但我确实得到了一般的想法,我正在尝试。 下面的代码在网上找到,使用链表制作堆栈,我想知道我们是否使用了结构而不是类,这个程序会是什么样的?
#include<iostream>
using namespace std;
// Creating a NODE Structure
struct node
{
int data;
struct node *next;
};
// Creating a class STACK
class stack
{
struct node *top;
public:
stack() // constructure
{
top=NULL;
}
void push(); // to insert an element
void pop(); // to delete an element
void show(); // to show the stack
};
// PUSH Operation
void stack::push()
{
int value;
struct node *ptr;
cout<<"nPUSH Operationn";
cout<<"Enter a number to insert: ";
cin>>value;
ptr=new node;
ptr->data=value;
ptr->next=NULL;
if(top!=NULL)
ptr->next=top;
top=ptr;
cout<<"nNew item is inserted to the stack!!!";
}
// POP Operation
void stack::pop()
{
struct node *temp;
if(top==NULL)
{
cout<<"nThe stack is empty!!!";
}
temp=top;
top=top->next;
cout<<"nPOP Operation........nPoped value is "<<temp->data;
delete temp;
}
// Show stack
void stack::show()
{
struct node *ptr1=top;
cout<<"nThe stack isn";
while(ptr1!=NULL)
{
cout<<ptr1->data<<" ->";
ptr1=ptr1->next;
}
cout<<"NULLn";
}
// Main function
int main()
{
stack s;
int choice;
while(1)
{
cout<<"n-----------------------------------------------------------";
cout<<"nttSTACK USING LINKED LISTnn";
cout<<"1:PUSHn2:POPn3:DISPLAY STACKn4:EXIT";
cout<<"nEnter your choice(1-4): ";
cin>>choice;
switch(choice)
{
case 1:
s.push();
break;
case 2:
s.pop();
break;
case 3:
s.show();
break;
case 4:
return 0;
break;
default:
cout<<"Please enter correct choice(1-4)!!";
break;
}
}
return 0;
}
只是想知道如果我们使用结构而不是类,这段代码会是什么样的?
答案 0 :(得分:2)
Struct几乎就像一个类。在Struct元素中,default是public,在类中它们是private。
答案 1 :(得分:-2)
想想这个小例子:
class TestClass
{
int foo(void)
{
return (a * a); // is equal to: return (this->a * this->a);
}
int a;
};
TestClass example;
example.foo(); // execute function foo of class TestClass with data of instance example
使用结构重写上面的内容如下所示:
struct TestClass
{
int a;
}
/* "struct implementation" of foo function */
int TestClass_foo(struct TestClass *this)
{
return (this->a * this->a);
}
struct TestClass example;
TestClass_foo(&example); // execute function TestClass_foo with data of example
所以让我们注意上面例子中使用结构时的差异:
TestClass_foo
时,都必须将指针传递给结构的实际实例。所以在这个简单的例子中,一个类的好处看起来并不太令人印象深刻。但是通过这个你可以了解基本的差异。
但是一旦你开始使用继承或成员可见性(公共,私有,受保护),你就无法使用结构(或者只是带来巨大的开销)。但这就是C ++的用途,因此您不必考虑编译器如何使代码工作。