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

#include <iostream>
using namespace std;
template <class Type> class List;
template <class Type> class ListNode {
friend class List<Type>;
Type data; //结点数据
ListNode<Type> *link; //结点链接指针
public:
ListNode ( ) : link (NULL) { } //构造函数
ListNode ( Type& item )
: data (item), link (NULL) { }
ListNode<Type> * getNode ( Type& item,
ListNode<Type> *next = NULL ) ;
//以item和next建立一个新结点
ListNode<Type> * getLink( ) { return link; } //取得结点的下一结点地址
Type getData ( ) { return data; } //取得结点中的数据
void setLink ( ListNode<Type> * next )
{ link = next; }
//修改结点的link指针
void setData ( Type value ) { data = value; }
//修改结点的data值
};

template <class Type> class List { //链表类
private:
ListNode<Type> *first, *current;
//链表的表头指针和当前元素指针
public:
List ( Type& value ) { first = current
= new ListNode<Type> ( value ); }
~List ( ) { MakeEmpty ( ); delete first; }
void MakeEmpty ( ); //将链表置为空表
int Length ( ) const; //计算链表的长度
ListNode<Type> * Find ( Type value );
//搜索含数据value的元素并成为当前元素
ListNode<Type> * Locate( int i );
//搜索第 i 个元素的地址并置为当前元素
Type * GetData ( );
//取出表中当前元素的值
int Insert ( Type value );
//将value插在当前位置后并成为当前元素
Type * Remove ( );
//将链表当前元素删去, 填补者为当前元素
ListNode<Type> * Firster ( )
{ current = first; return first; }
//当前指针置于表头, 返回表头结点地址
Type * First ( ); //第一个结点为当前结点
Type * Next ( ); //下一个结点为当前结点
int NotNull ( ) { return current != NULL; }
int NextNotNull ( ) { return current != NULL
&& current->link != NULL; }
};
template <class Type>
ListNode<Type> *ListNode<Type> ::
GetNode ( Type& item, ListNode <Type>
* next = NULL ) {
//建立新结点, 函数返回新结点地址。
ListNode<Type> *newnode =
new ListNode<Type> ( item );
newnode->link = next;
return newnode;
}
template <class Type>
void List <Type> :: MakeEmpty ( ) {
//删去链表中除表头结点外的所有其他结点
ListNode<Type> *q;
while ( first->link != NULL ) {
q = first->link; first->link = q->link; //将表头结点后第一个结点从链中摘下
delete q; //释放它
}
current = first; //当前指针置于表头结点
}
template <class Type>
int List<Type> :: Length ( ) const {
//求单链表的长度
ListNode<Type> *p = first->link;
//检测指针 p 指示第一个结点
int count = 0;
while ( p != NULL ) { //逐个结点检测
p = p->link; count++;
}
return count;
}
template <class Type>
ListNode<Type> * List <Type> ::
Find ( Type value ) {
//在链表中从头搜索其数据值为value的结点
current = first->link;
//当前指针 current 指示第一个结点
while ( current != NULL )
if ( current->data == value ) break;
else current = current->link;
return current;
}
template <class Type>
ListNode<Type>* List<Type> ::
Locate ( int i ) {
//定位函数。返回表中第 i 个元素的地址
//若 i < -1或 i 超出,则返回NULL
if ( i < -1 ) return NULL; // i 值不合理
if ( i == -1 ) //返回表头结点地址
{ current = first; return first; }
ListNode<Type> * p = first->link;
int k = 0;
while ( p != NULL && k < i )
{ p = p->link; k++; } //找第 i 个结点
if ( p != NULL ) current = p;
return p; //返回第 i 个结点地址或NULL
}

template <class Type>
Type * List<Type> :: GetData ( ) {
//取出链表中当前元素的值
if ( current == NULL ) return NULL; //空表
else return & current->data;
}
template <class Type>
int List<Type> :: Insert ( Type value ) {
//将新元素value插入在链表中当前结点后
if ( current == NULL ) return 0;
ListNode<Type> *newnode =
GetNode ( value, current->link );
current = current->link = newnode;
return 1; //插入成功,函数返回1
}

template <class Type>
Type * List<Type> :: Remove ( ) {
//将链表当前元素删去, 函数返回该元素
if ( current == first ) return NULL; //空表
ListNode<Type> * p = first;
while ( p->link != current ) p = p->link; //寻找当前元素的前驱元素结点
p->link = current->link; //摘下被删结点
Type val = current->data;
delete current; current = p->link; //释放, 重置当前元素指针
return &val;
}
template <class Type>
Type * List<Type> :: First ( ) {
//返回表中第一个结点的值的指针, 若为空
//表则返回NULL
if ( first->link != NULL ) {
current = first->link;
return &current->data;
}
else { current = NULL; return NULL; }
}
template <class Type>
Type *List<Type> :: Next ( ) {
//返回表中当前元素的下一个元素的值的
//指针, 若无下一元素则返回NULL
if ( current != NULL &&
current->link != NULL ) {
current = current->link;
return &current->data;
}
else return NULL;
}

void main()
{}
程序哪出错了,高手们帮忙改一下了

搜索更多相关主题的帖子: 数据结构 
2006-04-20 18:41
qzt040613
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:63
专家分:0
注 册:2006-3-15
收藏
得分:0 

你的程序是用C++编写的,很抱歉我不会C++.
下次提问题时最好把你编写程序的目的写出来,以便大家更好的解决问题.


天地无极,我本逍遥!
2006-04-26 13:03
快速回复:[求助]数据结构大问题
数据加载中...
 
   



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

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