实现以下操作
单链表的初始化
获取第i个元素的值
单链表的按值查找
单链表的第i个位置插入
删除单链表的第i个元素
后插法创建单链表
遍历单链表
直接放代码吧
#include<iostream>
using namespace std;
typedef struct LNode{
int element;
struct LNode * next;
}LNode,*LinkList;
/*单链表的初始化*/
LNode * CreatList()
{
LNode * head = new LNode;
head->next = NULL;
return head;
}
/*获取第i个元素的值*/
int Return_i(LinkList L, int i)
{
LNode * p = L->next;
int j = 1;
while(p && j<i)
{
p = p->next;
j++;
}
//p没有指向
if(!p || j>i){
cout<<"没有第i个元素"<<endl;
return 0;
}
return p->element;
}
/*单链表的按值查找*/
LNode * Find(LinkList L, int i)
{
LNode * p = L->next;
while(p && p->element !=i)
{
p = p->next;
}
return p;
}
/*单链表的第i个位置插入*/
void Insert(LinkList & L, int i,int input)
{
LNode * p = L;
int j = 0;
while( p && j<(i-1))
{
p = p->next;
j++;
}
if( !p || j>i-1)
{
cout<<"无法在第i个位置插入元素";
}
LNode * in = new LNode;
in->element = input;
in->next = p->next;
p->next = in;
}
/*删除单链表的第i个元素*/
void Delete(LinkList & L, int i)
{
LNode * p = L;
int j =0;
while ((p->next) && (j<i-1))
{
p = p->next;
j++;
}
if((!p->next) || j>i-1)
{
cout<<"无法删除第i个元素"<<endl;
return;
}
LNode * q = p->next;
p->next = q->next;
delete q;
}
/*后插法创建单链表*/
void Creat_Qian(LinkList & L,int num)
{
L = new LNode;
L->next = NULL;
LNode * p = L;
LNode * temp;
for(int i=0;i<num;i++)
{
temp = new LNode;
cin>>temp->element;
temp->next = NULL;
p->next = temp;
p = temp;
}
}
/*遍历单链表*/
void Output_List(LinkList L)
{
LNode * p = L->next;
while(p)
{
cout<<p->element<<" ";
p = p->next;
}
cout<<endl;
}
void Hello()
{
cout<<"Hello world"<<endl;
}
int main()
{
LinkList init;
/*后插法创建单链表*/
Creat_Qian(init,5);
cout<<"输出结果"<<'\n';
/*遍历单链表*/
Output_List(init); //输出1 2 3 4 5
/*获取第i个元素的值*/
int third = Return_i(init,3);
cout<<third<<endl; //输出3
/*单链表的按值查找*/
LNode * p = Find(init,5);
cout<<p->element<<endl; //输出5
/*单链表的第i个位置插入*/
Insert(init,3,10);
/*获取第i个元素的值*/
third = Return_i(init,3);
cout<<third<<endl; //输出10
/*遍历单链表*/
Output_List(init); //输出1 2 10 3 4 5
/*删除第i个位置元素*/
Delete(init,3);
Output_List(init); //输出1 2 3 4 5
return 0;
}