如何设置两个指针和一个计数器,假设p和p1是指针,p2是计数器,P要遍历整个链表,那么,当p走过m的整数倍的时候,计数器P2清零,p1赋p的指针,p1是跳跃地向前进,当p走到头的时候呢,p1再走P2的计数个数。从而实现要求
3条回答 默认 最新
- 技术专家团-小桥流水 2021-10-28 11:15关注
你的逻辑是错误的,假设链表中一个12个元素,你要找倒数第5个,走过两轮之后,p走到末尾,p2计数是2,p1指向第10个元素,p1再走2次不也到头了吗,怎么会是你要的元素呢?
以你的逻辑的话,应该是p先走m步,用pt记录这个点,这时候p1不变,然后p再走m步,此时,让p1 等于pt,pt再次记录p的位置。当最后一次不足m步的时候,计数是p2,这时候,只需要让p1再走p2步,就是倒数第m个元素。
代码如下,如有帮助,请帮忙采纳一下,谢谢。#include <stdio.h> #include <stdlib.h> struct StNode { int data; struct StNode* next; }; //创建节点 struct StNode* CreateNode(int d) { struct StNode* node = (struct StNode*)malloc(sizeof(struct StNode));; node->data = d; node->next = 0; return node; } //创建链表 struct StNode* CreateList() { struct StNode* head,*p,*t; int data; head = 0; p = head; t = head; printf("创建链表,请输入链表数据:");; while(1) { scanf("%d",&data); t = CreateNode(data); if(head ==0) { head = t; p = head; } else { p->next = t; p = t; } if(getchar() == '\n') break; } return head; } //打印链表 void Display(struct StNode* head) { while(head) { printf("%d ",head->data); head = head->next; } printf("\n"); } struct StNode* GetNode(struct StNode* head,int m) { struct StNode *p1=0,*pt = 0,*p; int i,cnt = 1; p = head; p1 = head; while (p) { if(cnt !=0 && cnt%m == 0) { if(pt!=0) p1 = pt; pt = p; cnt = 0; } cnt++; p = p->next; } if(pt==0) return 0; //说明链表长度不足m i=0; if(p1 == head) cnt--; while(i<cnt && p1) { i++; p1 = p1->next; } return p1; } int main() { struct StNode* list1 = CreateList(); //打印链表 Display(list1); struct StNode* p = GetNode(list1,2);//倒数第2个 if(p) printf("倒数第2个:%d\n",p->data); else printf("没有那么多数据\n"); p = GetNode(list1,5);//倒数第5个 if(p) printf("倒数第5个:%d\n",p->data); else printf("没有那么多数据\n"); p = GetNode(list1,8);//倒数第8个 if(p) printf("倒数第8个:%d\n",p->data); else printf("没有那么多数据\n"); p = GetNode(list1,15);//倒数第15个 if(p) printf("倒数第15个:%d\n",p->data); else printf("没有那么多数据\n"); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥15 PADS Logic 原理图
- ¥15 PADS Logic 图标
- ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
- ¥20 气象站点数据求取中~
- ¥15 如何获取APP内弹出的网址链接
- ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
- ¥50 STM32单片机传感器读取错误
- ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
- ¥15 机器人轨迹规划相关问题
- ¥15 word样式右侧翻页键消失