📄 clinklist.cpp
字号:
#include <cstdlib>
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LinkList;
void InitList(LinkList *&L)
{
L=(LinkList *)malloc(sizeof(LNode));
L->next=L;
}
void CreateListR(LinkList *&L,ElemType a[],int n)
{
LinkList *s,*r;
L=(LinkList *)malloc(sizeof(LNode));
L->next=NULL;
r=L;
for(int i=0;i<n;i++)
{
s=(LinkList *)malloc(sizeof(LNode));
s->data=a[i];
r->next=s;
r=s;
}
r->next=L;
}
int ListLength(LinkList *L)
{
int n=0;
LinkList *p;
p=L->next ;
while(p!=L)
{ n++;
p=p->next ;
}
return n;
}
bool GetElem(LinkList *L,int i,LinkList *&p)
{
int j=1;
p=L->next ;
while(p!=L && j<i)
{ p=p->next ;
j++;
}
if(p==L)
return false;
else
return true;
}
bool LocateElem(LinkList *L,ElemType e,LinkList *&p)
{
p=L->next ;
while(p!=L && p->data!=e)
p=p->next ;
if(p==L)
return false;
else
return true;
}
bool ListInsert(LinkList *L,int i,ElemType e)
{
int j=1;
LinkList *p;
p=L->next ;
while(p!=NULL && j<i-1)
{ p=p->next ;
j++;
}
LinkList *s;
s=(LinkList *)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return true;
}
void Create(LinkList *&rear,int n)
{
LinkList *s;
rear=(LinkList *)malloc(sizeof(LNode));
rear->data=1;
rear->next=rear;
for(int i=2;i<=n;i++)
{
s=(LinkList *)malloc(sizeof(LNode));
s->data=i;
s->next=rear->next;
rear->next=s;
rear=s;
}
}
void Juse(LinkList *rear,ElemType &e,int m)
{
LinkList *r,*p;
int i;
r=rear;
while(r->next!=r)
{ for(i=1;i<m;i++)
r=r->next ;
p=r->next ;
r->next=p->next ;
free(p);
}
e=r->data ;
free(r);
}
void main()
{
LinkList *L,*rear,*p;
ElemType a[]={11,22,33,44},e;
CreateListR(L,a,4);
Create(rear,8);
Juse(rear,e,5);
int len=ListLength(L);
bool b=GetElem(L,4,p);
b=LocateElem(L,100,p);
b=ListInsert(L,5,100);
p=L->next ;
while(p!=NULL)
p=p->next ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -