4分】F. DS单链表--类实现
题目描述
用C++语言和类实现单链表,含头结点
属性包括:data数据域、next指针域
操作包括:插入、删除、查找
注意:单链表不是数组,所以位置从1开始对应首结点,头结点不放数据
类定义参考
输入
n
第1行先输入n表示有n个数据,接着输入n个数据
第2行输入要插入的位置和新数据
第3行输入要插入的位置和新数据
第4行输入要删除的位置
第5行输入要删除的位置
第6行输入要查找的位置
第7行输入要查找的位置
输出
n
数据之间用空格隔开,
第1行输出创建后的单链表的数据
每成功执行一次操作(插入或删除),输出执行后的单链表数据
每成功执行一次查找,输出查找到的数据
如果执行操作失败(包括插入、删除、查找等失败),输出
串error,不必输出单链表
#include <iostream>
using namespace std;
#define ok 0
#define error -1
class ListNode{
public:
int data;
ListNode *next;
ListNode()
{
next=NULL;
}
};
class LinkList{
public:
ListNode *head;
int len;
LinkList();
~LinkList();
ListNode *LL_index(int i);//back i
int LL_get(int i);
int LL_insert(int i,int item);//insert
int LL_del(int i);
void display();//otutput
};
LinkList::LinkList()
{
head = new ListNode();
len = 0;
}
LinkList::~LinkList()
{
ListNode *p,*q;
p=head;
while(p!=NULL){
q=p;
p=p->next;
delete q;
}
len=0;
head=NULL;
}
void linklist::display()
{
ListNode *p;
p=head->next;
while(p)
{
cout<<p->data<<' ';
p=p->next;
}
cout<<endl;
}
ListNode Linklist::index(int i)
{
int j=0;
ListNode *p=head;
wwhile(p&&j<i)
{
p=p->next;
j++;
}
if(!p)
return NULL;
else
return p;
}
int LinkList::LL_get(int i)
{ if(i<=0&&i>len)
return error;
int j=0;
ListNode *p=head;
while(p&&j<i)
{
p=p->next;
j++;
}
if(!p)
return error;
else
return p->data;
}//先判断输入的i忠厚判断p是否为空,之后输入;
int LinkList::LL_insert(int i,int item)
{
if(i<=0&&i>len)
return error;
int j=0;
ListNode *p=head,*s;
while(p&&j<i)
{
p=p->next;
j++;
}//这里p已经是第i个数了
s=new ListNode();
s->data=p->data;//把要插入处的数字先存到s里,s为插入的位置的几点
p->data=item;//插入的元素插入
s=p->next;//p为第i个数,s为第i+1个数
len++;
return 1;
}
int LinkList::LL_del(int i)
{
if(i<=0||i>len)
return error;
ListNode *p,*s;
while(p&&j<i)
{
p=p->next;
j++;
}
s=p->next;
p->next=s->next;
delete s;
len--;
return 1;
}
int main()
{
int i,j,m;
LinkList list;
cin>>n;
for(j=0;j<n;j++)
{
cin>>m;
list.LL_insert(i,m);
}//循环插入
list.display();
for(j=0;j<2;j++)
{
cin>>i>>m;
list.LL_insert(i,m);
list.display();
}
for(j=0;j<2;j++)
{
cin>>i;
list.LL_del(i);
list.display();
}
for(j=0;j<2;j++)
{
cin>>i;
list.LL_get(i);
list.display();
}
}