/**
单链表操作
1.链表创建
2.链表插入(头插法,尾插法)
3.链表删除指定位置元素
4.链表整表删除
5.获取链表中某个位置的元素
**/
#include<iostream>
using namespace std;
class list
{
public:
list()
{
Creat();
}
void Creat();
void Output();
void Head_input(int a);
void Input(int number,int a);
void Rear_input(int a);
void Delet_node(int a);
void Delet_list();
int Find_node(int a);
private:
struct Node
{//结点
int data;
Node *next;
};
Node *head;
};
void list::Creat()
{
//创建单链表,头节点的处理
head = new Node;
head->data=0;
head->next=NULL;
}
void list::Output()
{
//输出单链表
Node *q = head->next;
while (q!=NULL)
{
cout << q->data << " ";
q=q->next;
}
}
void list::Input(int number,int a)
{
//插入指定位置
//把number插入第a个位置
if (a==1)
{
//如果要插到第一个结点的位置:更改头节点
Node *s = new Node;
s->data=number;
s->next = head->next;
head->next=s;
}
else
{
int i = 0;
Node *p = head;
while (i < a-1)
{
p = p->next;
i++;
}
Node *s = new Node;
s->data=number;
Node *q = p->next;
q->next = s;
s->next = q;
}
}
void list::Head_input(int a)
{
//头插法
Node *p = new Node;
p->data=a;
p->next = head->next;
head->next = p;
}
void list::Rear_input(int a)
{
//尾插法
Node *p = new Node;
p->data=a;
Node *q = head;
while (q->next != NULL)
{
q = q->next;
}
q->next = p;
p->next = NULL;
}
void list::Delet_node(int a)
{
//删除指定结点
//删除第一个结点
Node *p = head;
int i = 0;
while (i<a-1)
{
p = p->next;
i++;
}
p->next = p->next->next;
}
void list::Delet_list()
{
//整表删除
head->next = NULL;
}
int list::Find_node(int a)
{
//找到指定元素
Node *p = head->next;
int i = 0;
while (i < a)
{
p = p->next;
i++;
}
return p->data;
}
void main()
{
list List;
List.Creat();
List.Head_input(1);
List.Output();
cout<<"\n";
List.Rear_input(2);
List.Output();
cout<<"\n";
List.Input(5,1);
List.Output();
cout<<"\n";
cout<<"找到指定位置的元素:"<<List.Find_node(2);
cout<<"\n";
}