首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-12-29 
C++写的单链表,望指点一二小弟才学C++不久,数据结构也是自学的,下面是我用C++编写的一个实现单链表的类,希

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个新结点的数组。
[解决办法]
你的代码运行正常吗?我表示怀疑。
没有指向头结点的指针,怎么搜索?
设计方式欠考虑,编程方法有缺陷,感觉写起代码来比较费劲,对面向对象的理解也不是很深入。

热点排行