文章

28

粉丝

230

获赞

23

访问

244.2k

头像
(无头结点)循环单链表—纯C
P1018 贵州大学机试题
发布于2021年2月19日 17:30
阅读数 10.6k

#include <stdio.h>
#include <stdlib.h>

typedef struct LNode
{
	int Number;
	struct LNode * next;
} LNode;
 int main(int argc, char const *argv[])
 {
 	int key,N,count;
 	count=1 ;//设count为传递次数
 	key = 2 ;//用于给每一个元素编号
 	scanf("%d",&N);
 	LNode *C = (LNode *)malloc(sizeof(LNode));
 	C->Number = 1 ;
 	LNode *S=C;
 	while ((N-1) != 0){//尾插法建表(无头结点)
 		LNode *p = (LNode *) malloc (sizeof(LNode));
 		p->Number = key ;
 		S->next = p ;
 		S = p ;
 		key ++;
 		N--;
 	}

 	S->next = C;//使单链表=>循环单链表
 	LNode *r = C;//设置访问指针r
 	LNode *pre = r;//pre指针指向r。作r的前驱
 	while(r ->next != r){//最后一个结点时跳出循环
 		if (count == 3)//传递次数累计3次,进行元素删除
 		{
 			pre->next = r ->next;
 			r=pre->next ;
 			count = 1;//重置传递次数count
 		}else {
 			pre = r ;
 			r = r->next;
 			count ++ ;
 		}
 	}
 	printf("%d",r->Number);//打印输出最后一个结点的Number值

 	return 0;
 }

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发