非循环单链表的基本操作
来源:互联网 发布:安知玉如意书包网结局 编辑:程序博客网 时间:2024/06/06 09:47
#include<iostream>
using namespace std;
class LinkNode{
public:
int data;
LinkNode *next;
};
typedef LinkNode* NodePointer;
class LinkList{
public:
int insertData();
int insert(int i,int e);
int deleteElem(int i,int &e);
void deleteRepeat();
int getElem(int i,int &e);
int getLength();
bool isEmpty();
void display();
LinkList();
int clear();
virtual ~LinkList();
protected:
NodePointer head;
};
LinkList::LinkList(){
head=new LinkNode; //设头结点
head->next=NULL;
}
LinkList::~LinkList(){
clear();
}
int LinkList::clear(){
NodePointer p,q;
q=head;
while(q){
p=q;
q=q->next;
delete p;
}
head->next=NULL;
return 0;
}
int LinkList::insertData(){
int e;
NodePointer p;
NodePointer s;
p=head;
cout<<"请输入10个整形结点并以Enter键结束 "<<endl;
for(int i=0;i<10;i++){
s=new LinkNode;
cin>>e;
s->data=e;
s->next=p->next;
p->next=s;
p=p->next;
}
return 0;
}
int LinkList::insert(int i,int e){
int j=1;
NodePointer p,s;
p=head;
for( j;j<i;j++){
p=p->next;
}
if(i<j||!p) return -1;
s=new LinkNode;
s->data=e;
s->next=p->next;
p->next=s;
return 0;
}
int LinkList::deleteElem(int i,int &e){
int j=1;
NodePointer p,q;
p=head;
//p=p->next;
for(j;j<i;j++){
p=p->next;
}
if(i<1||!p) return -1;
q=p->next;
p->next=q->next;
e=q->data;
delete q;
return 0;
}
int LinkList::getElem(int i,int &e){
LinkNode *p;
p=head;
p=p->next;
for(int j=1;j<i;j++){
p=p->next;
}
e=p->data;
return 0;
}
void LinkList::display(){
LinkNode *p;
p=head;
p=p->next;
cout<<"链表为:"<<endl;
while(p){
cout<<p->data<<" ";
p=p->next;
}
}
int main(){
int i;
int e;
int b;
int f;
int g;
int e1;
LinkList a;
a.insertData();
a.display();
cout<<endl;
cout<<"输入你要插入的位置和插入的结点:";
cin>>i>>e1;
a.insert(i,e1);
a.display();
cout<<endl;
cout<<"你要删除第几结点:";
cin>>f;
a.deleteElem(f,e);
cout<<"删除元素为:"<<e<<endl;
a.display();
cout<<endl;
cout<<"你要查找第几个结点:";
cin>>g;
a.getElem(g,b);
cout<<"你查找位置的结点数据域为:"<<b<<endl;
return 0;
}
//我没有把每一个函数都实现,自己可以实现一下
- 非循环单链表的基本操作
- 顺序队列(非循环)的基本操作
- 循环单链表的基本操作
- 循环单链表的基本操作
- 循环单链表的基本操作
- 性线表----循环单链表的基本的操作
- 带头循环单链表的基本操作
- 数据结构学习之双向循环链表的基本操作(非递归实现)
- C语言实现双向非循环链表(不带头结点)的基本操作
- C语言实现双向非循环链表(带头结点尾结点)的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- 循环队列的基本操作
- E 文学习
- css技巧
- 删除文件夹下SVN自动生成的文件的一个bat方法
- 【Android】短信应用——短信(会话)实时删除
- Hello World
- 非循环单链表的基本操作
- 文件下载链接改成按钮时
- 使用LoadRunner测试Oracle ADF应用的小结
- android recovery模式流程
- linux下安装eclipse
- 万恶的wiki
- JVM JRE JDK,这些东西到底是什么?
- Ext Ext.Decode = Ext.util.JSON.Decode 方法介绍
- Qt 全屏显示 关闭子窗口出现闪烁