读书人

C++写的单链表瞅指点一二

发布时间: 2012-12-29 10:28:09 作者: rapoo

C++写的单链表,望指点一二
小弟才学C++不久,数据结构也是自学的,下面是我用C++编写的一个实现单链表的类,希望各位大神不吝赐教,怎么评论都好,操作系统是win xp,编译器是VS2010,(已编译通过),主函数就不贴了,都是测试的,哦对,我对new的用法不是很懂,代码中凡是使用new的地方,都是抱着试一试的态度,没想到真的通过了,
小弟虚心求教 ,
第一次发帖,有什么不对的地方,望各位海涵


#include <iostream>
#include <string>
using namespace std;
template <class T>
class MyLinkList{ //创建单链表类模板MyLinkList
private:
struct Node{
T data;
Node *next;
};
Node *p;
public:
MyLinkList(int size=10){ //构造函数
p=new Node[size];
p->next=NULL;
}
~MyLinkList(){ //析构函数
delete []p;
cout<<"\n销毁单链表\n";
}
void get_data(){ //获取单链表中所有元素
Node *h;
h=p->next;
while(h){
cout<<h->data<<" ";
h=h->next;
}
}
int get_size(){ //获取单链表长度
int count=-1;
Node *h=p;
while(h!=NULL){
h=h->next;
count++;
}
return count;
}
void insert(T a){ //在单链表第一个位置插入元素
Node *q;
q=new Node[1];
q->data=a;
q->next=p->next;
p->next=q;
}
void insert(int i,T a){ //重载insert函数,使其在第i个结点之前插入元素
Node *h,*q;
h=this->search_Index(i-1);
q=new Node[1];
q->data=a;
q->next=h->next;
h->next=q;
}
Node* search_Value(T a){ //按照数值查找单链表中的元素
Node *h;
h=p->next;
while(h&&h->data!=a)
h=h->next;
return h;


}
Node* search_Index(int i){ //按照序号查找单链表中的元素
int j=0;
Node *h;
h=p;
while(h&&j!=i){
h=h->next;
j++;
}
return h;
}
void del(){ //删除单链表第一个元素
Node *h,*q;
h=p;
q=this->search_Index(1);
h->next=q->next;
delete []q;
}
void del(int i){ //重载del函数,使其删除第i个结点
Node *h,*q;
h=this->search_Index(i-1);
q=this->search_Index(i);
h->next=q->next;
delete []q;
}
void set_data(){ //从标准输入流中向单链表中输入数据
T a;
int i=1;
while(cin>>a){
this->insert(i,a);
i++;
}
cin.clear();
cin.sync();
}

};
[解决办法]
{code=C/C++} 代码要放到这里 {/code}
[解决办法]
p=new Node是生成一个新结点,p=new Node[10]是生成包含10个新结点的数组。
[解决办法]
你的代码运行正常吗?我表示怀疑。
没有指向头结点的指针,怎么搜索?
设计方式欠考虑,编程方法有缺陷,感觉写起代码来比较费劲,对面向对象的理解也不是很深入。

读书人网 >C++

热点推荐