64,637
社区成员
发帖
与我相关
我的任务
分享
class Node
{
public:
Node(void);
~Node(void);
int num;
float price;
Node *next;
};
#include "Node.h"
class Single_Link_List
{
// 创建链表,填充节点
Node* Single_Link_List::Create(Node* head)
{
Node *pCur,*pNext; // pNext指向下一个节点,pCur指向当前节点
/* 头结点,当前为都节点,都指向都节点 */
pNext = new Node;
pCur = pNext;
head = pNext;
cout<<"请输入图书编号,以0结束:"<<endl;
cin>>pNext->num;
if(pNext->num!=0)
{
cout<<"请输入图书的价格:"<<endl;
cin>>pNext->price;
cout<<"初始化: "<<head<<" : "<<head->num<<" : "<<head->price<<endl; // 测试头结点
}
else // 小于等于零,表示输入结束。说明第一次输入就是0,表示是个空链表,都删除。
{
delete pNext;
pCur=NULL;
pCur->next=NULL;
head=NULL;
cout<<head<<" : "<<head->num<<" : "<<head->price<<endl; // 测试头结点
return head;
}
while(pNext->num!=0)
{
pCur=pNext; // 将当前输入的节点保存到保存当前节点的指针,方便pNext腾出空间输入下一个节点
pNext = new Node; // 开辟很空间,pNext腾出空间输入下一个节点
cout<<"请输入图书编号,以0结束"<<endl;
cin>>pNext->num;
if(pNext->num!=0)
{
cout<<"请输入图书的价格:"<<endl;
cin>>pNext->price;
}
pCur->next=pNext;
}
delete pNext;
pCur->next=NULL;
cout<<"结束后: "<<head<<" : "<<head->num<<" : "<<head->price<<endl; // 测试头结点
return head;
}
}
Main函数:
#include "stdafx.h"
#include <iostream>
#include "Node.h"
#include "Single_Link_List.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
Single_Link_List test;
Node *p=new Node;
cout<<p->num<<" ; "<<p->price<<endl;
Node *p1=test.Create(p);
cout<<p->num<<" ; "<<p->price<<endl;
//cout<<p1->num<<" ; "<<p1->price<<endl;
test.Show(p1);
}
void fun(int x)
{
x++; // 此处的x就是参数x的副本,而不是参数x本身
}
这是学C/C++的人必须搞懂的一个问题,否则以后的麻烦会很多。
你用指针的引用吧。