取名字好难-_- 2022-03-21 20:09 采纳率: 58.3%
浏览 144
已结题

C++:找寻密码(用单链表实现)

题目如下:
找寻密码
这是一个密码问题,密码由10个小写字母构成,这10个密码均从所有的小写字母中按规律查找,其规律是:所有的字母按字典序从'a'~'z'排列从头开始进行1到n报数,凡是报到n的字母出列,剩下的向小序号方向靠拢,再从头开始进行1到(n+1)报数,凡报到(n+1)的出列,剩下的向小序号方向靠拢,以后依次从头开始轮流进行1到n、1到(n+1)报数,直到得到出列的字母有10个为止,这些字母就是所需要的密码。

输入格式:
输入奇数次报数的出列序号n。

输出格式:
输出10个字母密码

输入样例:
在这里给出一组输入。例如:

5
输出样例:
在这里给出相应的输出。例如:

ejotygnvfm
我的思路:
首先用创建一个单链表,然后用for循环找寻要找的那个数存入数组中,用while作为外层循环直到找寻到10个数。


#include<bits/stdc++.h>
using namespace std;
typedef struct Lnode
{
    int a;
    struct Lnode *next;
}Lnode,*LinkList;
void initList(LinkList &L)
{
    L=new Lnode;
    L->next=NULL;
    LinkList temp;
    temp=L;
    for(int i=49;i<=74;i++)
    {
        LinkList p=new Lnode;
        p->a=i;
        p->next=NULL;
        temp->next=p;
        temp=p;
    }
}
void ListDelete(LinkList &L,int n)
{
    LinkList p=L;
    int j=0;
    while((p->next)&&(j<n-1))
        {
            p=p->next;
            ++j;
        }
    LinkList q;
    q=p->next;
    p->next=q->next;
    delete q;    
 } 
void show(int password[])
{
    for(int i=0;i<10;i++)
        printf("%c",password[i]+48);
 } 
int main()
{
    LinkList L,temp;
    initList(L);
    int password[10],j=0;
    int n;
    cin>>n;
    while(j<10)
    {
        temp=L->next;
        for(int i=0;i<n;i++)
        {
            temp=temp->next;
            if(i==n-2){
                password[j]=temp->a;
                ListDelete(L,n-2);
                j++;
            }
            if(temp->next==NULL)
                break;
        }
        for(int i=0;i<n+1;i++)
        {
            temp=temp->next;
            if(i==n-1){
                password[j]=temp->a;
                ListDelete(L,n-1);
                j++;
            }
            if(temp->next==NULL)
                break;            
        }
     }
     show(password);
    return 0;
}

但是答案始终不对,请问这是为什么啊?

img

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2022-03-21 20:22
    关注

    用链表就是杀鸡用牛刀了吧......用个结构数组就好了,就26个元素,每个元素标志一个是否使用的状态

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 已采纳回答 3月21日
  • 修改了问题 3月21日
  • 创建了问题 3月21日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?