递归实现不带头节点的单链表

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:57   2674   0

#include<iostream>
#include <malloc.h>
#include <stdlib.h>


typedef int ElemType;
using namespace std;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LinkNode;

//初始化
void InitList(LinkNode *&L)
{
L=new LinkNode;
L->next=NULL;
}
//尾插法--------插入
bool ListInsert(LinkNode *&L1,int i,ElemType e)
{
int j=0;
LinkNode *s=L1,*r;
if(i<=0)
return false;
while(j<i-1&&s!=NULL)
{
j++;
s=s->next;
}
if(s==NULL)
return false;
else
{
r= new LinkNode;
r->data=e;
r->next=s->next;
s->next=r;

return true;
}

}


//释放表
void DestoryList(LinkNode *&L)
{
LinkNode *T;
if(L==NULL)
return ;
DestoryList(L->next);
free(L);

}
//结点数
int Lenghth(LinkNode *L)
{
if(L==NULL)
return 0;
return ( Lenghth(L->next)+1);
}
//正向输出所有节点值
void Dis(LinkNode *L)
{
if(L==NULL)
return ;
cout<<L->data<<" ";
Dis(L->next);
}
//反向输出所有节点值
void fanDis(LinkNode *L)
{
if(L==NULL)
return ;
fanDis(L->next);
cout<<L->data<<" ";
}
//删除值为X的数据结点(测试值为:8.4)
void Dele(LinkNode *&L,ElemType e,int onlyall) //onlyall超重要的
{
LinkNode *sa;
if(L==NULL)
return ;
if(L->data==e)
{
sa=L;
L=L->next;
free( sa);
if(onlyall==1)
Dele(L,e,onlyall);

}
else
Dele(L->next,e,onlyall);
}

//最大值
ElemType MAX(LinkNode *L)
{
ElemType e;
if(L->next==NULL)
return L->data;
e=MAX(L->next);
if(e>L->data)
return e;
else
return L->data;
}
//最小值
ElemType MIN(LinkNode *L)
{
ElemType e;
if(L->next==NULL)
return L->data;
e=MIN(L->next );
if(e>L->data)
return L->data;
else
return e;
}


int main()
{
LinkNode *L;
ElemType z,temp;
ElemType o[7]={13,15,8,4,8,3,4 };
cout<<"初始化L:"<<endl;
InitList(L);
cout<<"尾插法插元素7个:";
L->data=o[0];
for(int i=1;i<=6;i++)
{
ListInsert(L,i,o[i]);
}

cout<<"正向输出:";
Dis(L);
cout<<endl;
cout<<"反向输出:";
fanDis(L);
cout<<endl;
cout<<"结点数:"<<Lenghth(L)<<endl;

cout<<"你想删除哪个位置的元素(仅一个元素):";
cin>>temp;
Dele(L,temp,0);
Dis(L);
cout<<endl;
cout<<"你想删除哪个元素的位置(所有一样的):";
cin>>z;
Dele(L,z,1);
cout<<"线性表为:";
Dis(L);
cout<<endl;
cout<<"最大值:"<<MAX(L)<<endl;
cout<<"最小值:"<<MIN(L)<<endl;
cout<<"销毁over";
DestoryList(L);
return 0;

}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP