单向循环链表的创建与输出

//单向循环链表即为无头无尾
//①尾结点的指针域指向头结点
//②设置一个尾指针更加高效
//③在插入和删除算法上要遵守单向链表的特点

//创建单向循环链表

ElemSN *Createlink(int a[])
{
	ElemSN *h,*t,*p;
	h=NULL;
	for(int i=0;i<N;i++){//为新结点分配单元
		p=(ElemSN *)malloc(sizeof(ElemSN));
		p->data=a[i];//为结点数据域赋值
		if(!h){//头指针指上来
			p->next=p;//同时指向自己,形成循环链
			h=t=p;
		}
		else{
			p->next=h;//挂链
			t=t->next=p;//挂链挪指针
		}
	}
	return h;
}

//输出

void Prelink(ElemSN *h)
{
	ElemSN *p;
	p=h;
	do{//采用do..while形式,避免是一个结点的情况
		printf("%5d",p->data);
		p=p->next;
	}while(p!=h);
}

猜你喜欢

转载自blog.csdn.net/qq_42727102/article/details/88960243