单循环链表基本操作

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*1、CreateList( ):创建一个带头结点的空的单循环链表;

2、InsertList( ):输入一组数据,以0表示输入结束, 并依次建立各个元素结点,逐个插入到单循环链表尾

3、DeleteList( ):删除单循环链表的从第i个数据元素开始的m个数据元素,同时释放被删结点空间

4. ListPrint( ):将单向循环链表的数据元素从表头到表尾依次显示

5. DevList( ):将此单循环链表拆分成两个单循环链表,其中一个包含所有的数据元素为偶数的结点,

另一个包含所有的数据元素为奇数的结点.*/

#include

#include

typedef struct node{

int data;

struct node *next;

}LNode,*linklist;

void createlist(linklist &L)

{linklist p=L;

p->next=p;

}

void insertlist(linklist &L)

{int x;

linklist p=L,q;

scanf("%d",&x);

while(x!=0)

{q=(linklist)malloc(sizeof(LNode));

q->data=x;q->next=NULL;

p->next=q;

p=q;

scanf("%d",&x);

}

q->next=L;

}

void printlist(linklist L)

{linklist p=L->next ;

if(p==L)printf("这是一个空表!\n");

while(p!=L){printf("%2d",p->data);p=p->next;}

printf("\n");

}

void deletelist(linklist &L,int i,int m)

{linklist p=L,q;

for(int n=1;n

{p=p->next;

if(p==L)p=p->next;

}

q=p->next;

for(n=0;n

if(q!=L)

{p->next=q->next;

free(q);

q=p->next;

}

else

{q=q->next;

L->next=q->next;

free(q);

q=L->next;

p=L;

}

}

void devlist(linklist L,linklist &La,linklist &Lb) {linklist p=L->next,pa=La,pb=Lb,q;

while(p!=L)

{ if((p->data)%2==0)

{q=(linklist)malloc(sizeof(LNode));

q->data=p->data;

pa->next=q;

pa=q;

}

else

{q=(linklist)malloc(sizeof(LNode));

q->data=p->data;

pb->next=q;

pb=q;

}

p=p->next;

}

pa->next=La;

pb->next=Lb;

}

void main()

{//int i,m;

linklist L,La,Lb;

L=(linklist)malloc(sizeof(LNode));

La=(linklist)malloc(sizeof(LNode));

Lb=(linklist)malloc(sizeof(LNode));

createlist(L);

printf("请输入一组数据, 并以0表示输入结束:\n"); insertlist(L);

printf("单循环链表的数据元素从表头到表尾依次为:\n");

printlist(L);

/*printf("\n请分别输入i、m的值:\n");

scanf("%d%d",&i,&m);

deletelist(L,i,m);

printf("删除操作后的单循环链表的数据元素从表头到表尾依次为:\n"); printlist(L);*/

devlist(L,La,Lb);

printf("拆分后,单循环链表a的数据元素从表头到表尾依次为:\n"); printlist(La);

printf("拆分后,单循环链表b的数据元素从表头到表尾依次为:\n"); printlist(Lb);

}

相关文档
最新文档