菜鸟的程序,请指点!

vood 2003-10-16 08:58:20
小弟刚刚从c转到c++
写了小程序
请大哥门指点!!
#include<iostream.h>

class List;


class ListNode{

private:
int data;
ListNode *next;
};

class List{

public :
ListNode *creatlist(){

ListNode *p;

int n;

head=tail=NULL;

cout<<"Input data"<<endl;

while((cin>>n)>0){
ListNode *p=new ListNode ;

p->data=n;

p->next=NULL:

if(h==NULL) head=tail=p;

else tail->next=p;

}
return head;

};

void search(ListNode *head){

ListNode *p;

p=head;

for (p!=NULL) {

cin>>p->data>>endl;

p=p->next;

};


};

private:

ListNode *head,*tail;

};

void main(){

ListNode *h;

creatlist();

h=creatlist();

search(ListNode *h);



}
...全文
96 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
stickforme 2003-10-17
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

template <class Node_entry>//模板类
struct Linknode
{
Node_entry data;
Linknode *next;
Linknode();
Linknode(Node_entry item,Linknode *link =NULL);
};

template <class Node_entry>
Linknode<Node_entry>::Linknode()
{
next = NULL;
}

template <class Node_entry>
Linknode<Node_entry>::Linknode(Node_entry item,Linknode *link)
{
data = item;
next = link;
}

template <class Node_entry>
class List
{
public:
List();
~List();
void createlist();
bool search(Node_entry searcher);
Linknode<Node_entry>* header(){return head;}
int counter(){return count;}
protected:
int count;
Linknode<Node_entry> *head;
};

template <class Node_entry>
List<Node_entry>::List()
{
count = 0;
head = NULL;
}

template <class Node_entry>
List<Node_entry>::~List()
{
}

template <class Node_entry>
void List<Node_entry>::createlist()
{
Node_entry temp;
Linknode<Node_entry> *new_node,*temp_node;
cout<<"Input the entries to form a list:"<<endl;
cin>>temp;
new_node = new Linknode<Node_entry>(temp,NULL);
count ++;
head = new_node;
temp_node = head;
while(1)
{
cin>>temp;
if(temp<0)
break;
else
{
new_node = new Linknode<Node_entry>(temp,NULL);
temp_node->next = new_node;
temp_node = new_node;
}
count ++;
}
}

template <class Node_entry>
bool List<Node_entry>::search(Node_entry searcher)
{
Linknode<Node_entry> *temp;
temp = head;
while(temp!=NULL)
{
if(temp->data == searcher)
return true;
temp = temp->next;
}
return false;
}

int main()
{
List<double> new_list;
new_list.createlist();
Linknode<double>* p = new_list.header();
int count = new_list.counter();
while(count)
{
cout<<p->data<<" ";
p = p->next;
count --;
}
cout<<endl;
if(new_list.search(1))
cout<<"1 is in the list!"<<endl;
return 0;
}
刚才忘写search函数了



nowonline 2003-10-17
  • 打赏
  • 举报
回复
不要急,先去看看一些概念的东西再写程序也不迟
stickforme 2003-10-17
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

template <class Node_entry>//模板类
struct Linknode
{
Node_entry data;
Linknode *next;
Linknode();
Linknode(Node_entry item,Linknode *link =NULL);
};

template <class Node_entry>
Linknode<Node_entry>::Linknode()
{
next = NULL;
}

template <class Node_entry>
Linknode<Node_entry>::Linknode(Node_entry item,Linknode *link)
{
data = item;
next = link;
}

template <class Node_entry>
class List
{
public:
List();
~List();
void createlist();
Linknode<Node_entry>* header(){return head;}
int counter(){return count;}
protected:
int count;
Linknode<Node_entry> *head;
};

template <class Node_entry>
List<Node_entry>::List()
{
count = 0;
head = NULL;
}

template <class Node_entry>
List<Node_entry>::~List()
{
}

template <class Node_entry>
void List<Node_entry>::createlist()
{
Node_entry temp;
Linknode<Node_entry> *new_node,*temp_node;
cout<<"Input the entries to form a list:"<<endl;
cin>>temp;
new_node = new Linknode<Node_entry>(temp,NULL);
count ++;
head = new_node;
temp_node = head;
while(1)
{
cin>>temp;
if(temp<0)
break;
else
{
new_node = new Linknode<Node_entry>(temp,NULL);
temp_node->next = new_node;
temp_node = new_node;
}
count ++;
}
}

int main()
{
List<double> new_list;
new_list.createlist();
Linknode<double>* p = new_list.header();
int count = new_list.counter();
while(count)
{
cout<<p->data<<" ";
p = p->next;
count --;
}
return 0;
}

从上面这个程序可以看出你对于C++的整体框架与风格还不够了解
看看下面这个C++写法
对于你这种刚从C转向C++的不太适应C++整体框架与思想的情况
我建议你买本《C++ Primer》
它前面涉及了关于C语言的相关章节(懂的部分可以不看)
其对C++部分的描述也分为层层递进的几部分,且其对C++语言的描述也紧紧结合程序实例
stickforme 2003-10-17
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

template <class Node_entry>//模板类
struct Linknode
{
Node_entry data;
Linknode *next;
Linknode();
Linknode(Node_entry item,Linknode *link =NULL);
};

template <class Node_entry>
Linknode<Node_entry>::Linknode()
{
next = NULL;
}

template <class Node_entry>
Linknode<Node_entry>::Linknode(Node_entry item,Linknode *link)
{
data = item;
next = link;
}

template <class Node_entry>
class List
{
public:
List();
~List();
void createlist();
Linknode<Node_entry>* header(){return head;}
int counter(){return count;}
protected:
int count;
Linknode<Node_entry> *head;
};

template <class Node_entry>
List<Node_entry>::List()
{
count = 0;
head = NULL;
}

template <class Node_entry>
List<Node_entry>::~List()
{
}

template <class Node_entry>
void List<Node_entry>::createlist()
{
Node_entry temp;
Linknode<Node_entry> *new_node,*temp_node;
cout<<"Input the entries to form a list:"<<endl;
cin>>temp;
new_node = new Linknode<Node_entry>(temp,NULL);
count ++;
head = new_node;
temp_node = head;
while(1)
{
cin>>temp;
if(temp<0)
break;
else
{
new_node = new Linknode<Node_entry>(temp,NULL);
temp_node->next = new_node;
temp_node = new_node;
}
count ++;
}
}

int main()
{
List<double> new_list;
new_list.createlist();
Linknode<double>* p = new_list.header();
int count = new_list.counter();
while(count)
{
cout<<p->data<<" ";
p = p->next;
count --;
}
return 0;
}




langzi8818 2003-10-17
  • 打赏
  • 举报
回复
好好看看书,最好吧函数都提出来放到,CPP中。
看看书吧,没有关系的,你慢慢就什么都学会了,不要急
lingar 2003-10-16
  • 打赏
  • 举报
回复
你有没有好的风格啊
你学的c 呢
那里也有风格的啊
而且类也不是这样用的啊
他不是结构啊
建议你还是先看看书
在用用书上的例子
那样你就会了解的快一些
laomai 2003-10-16
  • 打赏
  • 举报
回复
建议你去看一下清华殷人昆编写的数据结构的第76页,有完整的C++链表的例子
Anorld 2003-10-16
  • 打赏
  • 举报
回复
建议先把面向对象的思想熟悉,从简单一点的程序入手,熟悉类的的封装等机制!
c++尽管兼容c,但从思想上有很大不同的地方
laomai 2003-10-16
  • 打赏
  • 举报
回复
我给你修改了一下,供你参考。另外,你的程序没有注释和好的排版,对阅读的人是很不舒服的,请以后注意。好的注释和清晰的排版有助于程序的阅读和修改
/*List.h文件,类的头文件,只包含声明,没有实现*/
class List; //List类的前向声明
class ListNode //节点类
{
friend class List; //没有这一句,List类无法访问节点的值
private:
int data;
ListNode *next;
};
class List{
public :
List(const int&value); //类的构造函数,实现与你写的createlist有部分相同
ListNode * search(Type value); //搜索值为value的节点
private:
ListNode *head,*tail;
};
laomai 2003-10-16
  • 打赏
  • 举报
回复
强烈同意楼上的看法,你这个程序离C++的风格差了很多啊。
我说几条吧(建议你看完我的评论后再对照一下书,可能会有帮助)
第一个要注意的地方,
自己的类一般应提供构造函数。以代替C中的CREATE、INITIAL等函数
第二个要注意的地方:
函数的实现体不要放在类说明中,要放在类外。因为对调用者而言,他在类声明中所需要看到的信息是类的功能,而不是类的实现。
三、少用全局函数,尽可能把函数封装在类中。
因此SEARCH函数应该放在类list中
daizh 2003-10-16
  • 打赏
  • 举报
回复
建议你找书本上的一个例子,去编译执行,看看c++语言的组织,尤其是类的构成和用法,这样比找错要学的快。
daizh 2003-10-16
  • 打赏
  • 举报
回复
狂晕。
程序介绍: ◎前言:这是应一个MM的要求,搞了一个类似于知识库的系统,为了方便她快速搜索到需要的文章和问题答案,因此就做成了现在这样的搜索为主的cms,里面存放了大约3000篇以上的知识量,涉及到3大类10几个层面,涵盖了衣食住行、生活娱乐、电脑知识、动植物等,甚至是三国演义和西游记全篇,这个文件这么大,就是因为数据库内容太多了!不过这样大家一下下来就能用了! ◎特点:系统用了智能拆分关键字查询和分类别查询,主要就用到3个文件,包括一个错误提示页!后台可要可不要,自己掂量掂量看看是否需要就是! ◎设计:界面比较漂亮,完全是down 别人的,因为过年了,设计师都忙着回家,没空帮我,不过的确很不错,希望你会和我一样喜欢!logo和head 都留空,你可以自己进images修改它,想取什么名称就取什么名称, ◎安全:因为我也要回家过年,而且这本身就只针对MM个人电脑使用,本人没怎么认真对待,(惭愧~~~)但对于普通的菜鸟,应该是没问题的,如果你是入侵高手,建议自己在检测和修缮下,如果可以,到我们的论坛发表下! ◎其他:后台可以设置这个站点的名称和网站开关,也可以屏蔽指定的IP访问,由于我是拷贝CMS的config,因为没有删除其他的内容,(再次惭愧~~,)貌似没什么影响!如果你需要本地测试,建议把数据库备份,然后删除2500篇内容,不然会影响你测试速度,尤其是服务器配置不好的同志! ◎最后:本程序是小治技术社区的坏孩子作品,感谢社区的编程高手对本人给与技术上的指点!发布此版本旨在与众网友交流学习,整理过程中较为仓促,难免有疏漏,大家提出指正。
===============XP补丁自动安装器===================== --------------------------------------------------------------------------------- ◆2008-12-12更新: 注:该程序将在Build文件夹下生成OFFICE.CMD批处理文件, 防止打不上时,也可手动运行。 同时致歉,第一个测试版我没注意,把OFFICE补丁参数搞 错了。这次重新写过了,换了另外一种方式运行,确保能 成功打上OFFICE补丁。 ---------------------------------------------------------------------------------- ◆程序简要说明: 1、可以用360把下载的补丁(包括FLASH、WINDOWSXP、WMP、OFFICE补丁) 放在本程序同级目录下Build文件夹下即可。 2、程序自动识别是那类补丁,然后用相应的静默安装参数依次安装。 3、程序依次把补丁打完后,然后自动清理安装痕迹。 ◆声明: 本程序非常简单,并非自己班门弄斧,最主要是向我这样喜欢玩弄封装的 人经常装原版系统来封装,便需对系统打全补丁。我们可以把之前收藏的补丁 存放起来,用这个程序打补丁时就省时多了。 但你还是觉得麻烦的话,去下别人论坛里补丁集;也可以就用360慢慢的打吧。 取决于个人喜好。当然写个批处理也能解决的,网上太多了。写这个程序,仅 是我自己一时的兴趣。大大们别嘲笑我哟!!! ◆遗憾: ★本程序没有设置安装进度条; ★本程序不能自动识别和跳过已安装的补丁。 不能尽善尽美,故而遗憾!望高手指点!我是菜鸟,正在学习中... ------------------------------------------------------------------------------------------------------

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧