网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
03月28日
漏签
0
天
c语言吧
关注:
798,996
贴子:
4,352,746
看贴
图片
吧主推荐
视频
游戏
5
回复贴,共
1
页
<<返回c语言吧
>0< 加载中...
求助
循环单链表
只看楼主
收藏
回复
独行者灬白泽
强能力者
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
为什么这么写的没有输出啊
独行者灬白泽
强能力者
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
do{
if(flag==0){
printf("%d",p->data);
flag=1;
}
else{
printf(" %d",p->data);
}
p=p->next;
}while(p!=start);学习群里大佬说这样就可以了,但我看不出什么差别
南昌眠矿州催网络科技
吃何首乌会伤肝脏吗,快速在线测一下你的健康情况,全面分析你的身体健康情况,35道题3分钟吃何首乌会伤肝脏吗,立即测试一下吧。
2025-03-28 01:17
广告
立即查看
独行者灬白泽
强能力者
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
Node* CreateLinkList(int n) {
Node* head=NULL;
Node* p=NULL;
Node* start=NULL;
int i;
for(i=0;i<n;i++){
Node* newNode=(Node*)malloc(sizeof(Node));
scanf("%d",&newNode->data);
newNode->next=NULL;
if(head==NULL){
head=newNode;
p=head;
}
else{
p->next=newNode;
p=newNode;
}
if(i==0){
start=newNode;
}
}
p->next=start;
return head;
}
void PrintLinkList(Node* head, int x) {
Node* p = head;
int flag=0;
while (p->data!=x) {
p=p->next;
}
Node* start=p;
while(p!=start){
if(flag==0){
printf("%d",p->data);
flag=1;
}
else{
printf(" %d",p->data);
}
p=p->next;
}
printf("\n");
}
void Destroy(Node* head) {
Node *p;
while (head->next != head) {
p = head->next;
head->next = p->next;
free(p);
}
free(head);
}
int main() {
int n, x;
scanf("%d", &n);
Node *head = CreateLinkList(n);
while (scanf("%d", &x) != EOF) {
PrintLinkList(head, x);
}
Destroy(head);
return 0;
}
Kolkas
帕秋莉糕
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这里,start初始化为p,但是循环条件为p和start不相等,如果用while的话循环开始即结束,一次也不会执行
如果改成do while的话循环体至少执行一次,p至少会移动一次,所以可以避免这个bug
Kolkas
帕秋莉糕
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
捉虫的话可以利用你的flag,多一个或就好了
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示