#include <iostream>
#include<string>
#include<vector>
using namespace std;
typedef struct Lnode//链表节点
{
int e;
Lnode* next;
};
typedef struct Link//链表
{
Lnode* head;
};
Link* creat_list()//生成链表
{
Link* l=new Link();
if(!l)
return NULL;
l->head=new Lnode();
if(!l->head)
{
delete(l);
return NULL;
}
l->head->next=NULL;
l->head->e=0;
return l;
}
Lnode* creat_node(int e)//生成新的节点
{
Lnode* pn=new Lnode();
if(!pn)
return NULL;
pn->next=NULL;
pn->e=e;
return pn;
}
int l_insert(Link* l,int e)//按从小到大插入
{
if(!l)
return -1;
Lnode* pre=l->head;
Lnode* pt=pre->next;
while(pt)//
{
if(pt->e<e)
{
pre=pt;
pt=pt->next;
}
else
{
Lnode* pn=creat_node(e);
if(!pn)
return -1;
pn=pre->next;
pre->next=pn;
break;
}
}
if(!pt)
{
Lnode* pn=creat_node(e);
if(!pn)
return -1;
pn->next=pre->next;
pre->next=pn;
}
return 0;
}
int l_delete(Link* l,int m,int n)//删除函数
{
if(!l||!l->head->next)
return -1;
Lnode* pre=l->head;
Lnode* p=pre->next;
while(p)
{
if(p->e<m)
{
pre=p;
p=p->next;
}
else
{
break;
}
}
while(p)
{
if(p->e>=n)
{
break;
}
else
{
p=p->next;
}
}
Lnode* pt=pre;
pre=pre->next;
pt->next=p;
while(pre!=p)
{
Lnode* s=pre;
pre=pre->next;
delete s;
s=NULL;
}
return 0;
}
int main()
{
Link* L=creat_list();
if(!L)
return -1;
for(int i=1;i<10;i++)
{
if(l_insert(L,i))
return -1;
}
int m=3;
int n=6;
if(l_delete(L,m,n))
return -1;
Lnode* pm=L->head->next;
while(pm)
{
cout<<pm->e<<endl;
pm=pm->next;
}
return 0;
}