#include <bits/stdc++.h> //节点结构体 using namespace std; struct Node{ int data; Nodenext; }; //创建单链表:返回单链表的头结点 Node createList(){ Node* h=new Node;//创建了一个新节点 Node* r=h;//只有一个节点的时候 头尾节点都是同一个 //输入数据构建链表 输入-1结束 Node* p; int a; while(1){ cin>>a; if(a==-1){ break; } p=new Node; p->data=a; p->next=NULL; //将新节点连接在链表的尾部 r->next=p; r=p; } return h; } void printList(Nodeh){ Node t=h->next; while(t!=NULL){ cout<data<<" "; t=t->next; } } bool insert(Node* h,int n,int index){ Node* p=h; for(int i=1;i<index;i++){ p=p->next; } Node* t=new Node; t->data=n; t->next=p->next; p->next=t; return true; } int main() { Node* h=createList(); int n,index; cin>>n>>index; insert(h,index,n); printList(h); return 0; }

1 条评论

  • @ 2025-12-11 17:19:00

    #include <bits/stdc++.h> using namespace std; const int MAXN = 205; int n, a, b, k[MAXN], d[MAXN];

    void dfs(int layer, int step) { d[layer] = step; int t = layer - k[layer]; if (t >= 1 && step + 1 < d[t]) dfs(t, step + 1); t = layer + k[layer]; if (t <= n && step + 1 < d[t]) dfs(t, step + 1); }

    int main() { ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); cin >> n >> a >> b; for (int i = 1; i <= n; i++) cin >> k[i]; memset(d, 0x3f, sizeof(d)); dfs(a, 0); cout << (d[b] == 0x3f3f3f3f ? -1 : d[b]); return 0; }

    • 1