| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 588 人关注过本帖
标题:[求助]关于返回指针的问题
只看楼主 加入收藏
水蓝瓶子
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-3
收藏
 问题点数:0 回复次数:6 
[求助]关于返回指针的问题

我给一个存放多数据的单链表做了一个封装
部分内容是
#include<iostream>
using namespace std;
//定义结点类型
template <class T>
struct node
{
node *next; //指针域指针
long num; //学号
char name[10]; //姓名
int sc; //语文成绩
int sm; //数学成绩
int se; //英语成绩
};
//定义线性链表类
template <class T>
class linked_List1
{
private:
node<T> *head; //头指针
public:
linked_List1(); //建立线性链表
void prt_linked_List1(); //输出链表各元素
T* inp_linked_List1(); //依次输入各元素
void ins_linked_List1(); //插入
void del_linked_List1(); //删除
};

//建立空的线性链表
template <class T>
linked_List1<T>::linked_List1()
{
head=NULL; //头指针为空
return;
}

//依次输出链表各元素
template <class T>
void linked_List1<T>::prt_linked_List1()
{
while(head)
{
cout<<head->num<<" "<<head->name<<" "<<head->sc<<" "<<head->sm<<" "<<head->se<<endl;
head=head->next;
}
}

//依次输入链表各元素
template <class T>
T* linked_List1<T>::inp_linked_List1()
{
node<T> *pS,*pE; //结点指针pS,链尾指针pE
pS=new node<T>;
cout<<"请依次输入学号,姓名,语文成绩,数学成绩和英语成绩:"<<endl;
cin>>pS->num>>pS->name>>pS->sc>>pS->sm>>pS->se;
head=NULL;
pE=pS;

while(pS->num!=NULL)
{
if(head=NULL)
head=pS;
else
pE->next=pS;
pE=pS;
pS=new node<T>;
cin>>pS->num>>pS->name>>pS->sc>>pS->sm>>pS->se;
}
pE->next=NULL;
delete pS;
return(head);
}

最后我想返回一个指针,给prt_linked_List1调用
可是行不通
请问各位大虾有没有一个好的返回指针的方法

搜索更多相关主题的帖子: 指针 
2007-06-20 06:47
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
可以这样返回啊?为什么行不通?

Fight  to win  or  die...
2007-06-20 09:22
水蓝瓶子
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-3
收藏
得分:0 

不行啊

e:\microsoft visual studio\myprojects\linked_list1\linked_list1.h(70) : error C2440: 'return' : cannot convert from 'struct node<double> *' to 'int *'

是不是主函数调用的时候出错了

2007-06-20 11:07
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
你返回类型错了啊

template <class T>
node<T>* linked_List1<T>::inp_linked_List1() //这里,返回head,
{
node<T> *pS,*pE; //结点指针pS,链尾指针pE
pS=new node<T>;
cout<<"请依次输入学号,姓名,语文成绩,数学成绩和英语成绩:"<<endl;
cin>>pS->num>>pS->name>>pS->sc>>pS->sm>>pS->se;
head=NULL;
pE=pS;

while(pS->num!=NULL)
{
if(head=NULL)
head=pS;
else
pE->next=pS;
pE=pS;
pS=new node<T>;
cin>>pS->num>>pS->name>>pS->sc>>pS->sm>>pS->se;
}
pE->next=NULL;
delete pS;
return(head);
}

Fight  to win  or  die...
2007-06-20 11:15
水蓝瓶子
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-3
收藏
得分:0 
谢谢啦
不过看来是整个都弄错了
inp_linked_List1()返回的head指针值无法被prt_linked_List1()使用
浑掉了。@_@
2007-06-20 11:41
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
你用类封装了head指针了啊。所以不用再去调用,你就这样很自然。
要是增加查找一个指定接点的信息倒有价值,你可以从这方面想想!

呵呵~个人见解。

Fight  to win  or  die...
2007-06-20 11:47
水蓝瓶子
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-6-3
收藏
得分:0 

恩。现在就是想不明白为什么最后输出会出错。好象head不能被调用一样。

2007-06-20 12:03
快速回复:[求助]关于返回指针的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016115 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved