#include<iostream>
using namespace std;
typedef struct student
{
int scores;
student *next;
}*Linklist,Link;
void creat1(Linklist &L,int n);//"头插法"
void creat2(Linklist &L,int n);//"尾插法"
int counts(Linklist &L);//计数
void printlist(Linklist &L);
void shanchu(Linklist &L,int i);
int chazhao(Linklist &L,int x);
int main()
{
Linklist p1;
Linklist p2;
cout<<"你想创建几个节点"<<endl;
int n;
cin>>n;
creat1(p1,n);
printlist(p1);
cout<<"你想删除第几个元素"<<endl;
int m;
cin>>m;
shanchu(p1,m);
printlist(p1);
cout<<"你想查找的那个值是多少"<<endl;
cin>>m;
cout<<"你想查找的那个值位于第"<<chazhao(p1,m)<<"个"<<endl;
return 0;
}
void creat1(Linklist &L,int n)//"头插法"
{
int i=0;
L=new Link;
L->next=NULL;
Linklist s;
for(i=0;i<n;i++)
{
s=new Link;
cin>>s->scores;
s->next=L->next;
L->next=s;
}
}
void creat2(Linklist &L,int n)//"尾插法"
{
int i;
L=new Link;
L->next=NULL;
Linklist r,p;
r=L;
for(i=0;i<n;i++)
{
p=new Link;
cin>>p->scores;
p->next=r->next;
r->next=p;
r=p;
}
r->next=NULL;
}
void shanchu(Linklist &L,int i) //删除第i个元素
{
Linklist p=new Link;
p=L;
int j=1;
if(p->next==NULL)
{
return ;
}
Linklist p1=p,p2=p->next;
if(i>counts(L))
{
return ;
}
while(j<i)
{
p1=p1->next;
p2=p2->next;
j++;
}
p1->next=p2->next;
delete(p2);
}
int chazhao(Linklist &L,int x)//查找指定的值
{
Linklist p=new Link;
p=L;
int i=1;
p=p->next;
while(p!=NULL&&p->scores!=x)
{
p=p->next;
i++;
}
if(p==NULL)
{
cout<<"找不到这个数"<<endl;
return 0;
}
else
{
return i;
}
}
int counts(Linklist &L)
{
int i=0;
Linklist p=new Link;
p=L;
while(p->next!=NULL)
{
p=p->next;
i++;
}
return i;
}
void printlist(Linklist &L)
{
Linklist p=new Link;
p=L;
p=p->next;
while(p!=NULL)
{
cout<<p->scores<<" ";
p=p->next;
}
}
单链表的 创建 删除指定位置的元素 返回查找到值的位置
最新推荐文章于 2023-02-26 17:31:12 发布