user-0 提问: 为什么运行后输入数字没有反应，不能将两个数组合并？求指点

回复:
user: user-1
content: C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-2
content: 引用 2 楼 qzjhjxj 的回复:代码错误修正，增加了打印输出函数，逻辑没整明白，供参考：#include<stdio.h> #include<stdlib.h>  #define MAXSIZE 10  typedef struct LNode {     int data;     int cur; }LNode,SLinkList[MAXSIZE];  void InitSpace(SLinkList &L) {     int i;     for(i=0;i<MAXSIZE-1;i++){         L[i].cur=i+1;         L[i].data=0;     }     L[MAXSIZE-1].cur=0;     L[MAXSIZE-1].data=0; }  int Malloc (SLinkList &L) {     int i;     i=L[0].cur;     if(L[0].cur)        L[0].cur=L[i].cur;     return i; }  void Free(SLinkList &L,int k) {     L[k].cur=L[0].cur;     L[0].cur=k; }  void Different(SLinkList &L) {     //InitSpace(L);     int S;     S=Malloc(L);     int r;     r=Malloc(L);     r=S;     int m=4,n=6,i,j;     for(i=0;i<m;i++)  //这里输入m次     {        j=Malloc(L);        //scanf("%d",L[j].data);        scanf("%d",&L[j].data);        L[r].cur=i;        r=j;     }     L[r].cur=0;     for (i=0;i<n;i++)  //这里循环n次     {        int b;        //scanf("%d",b);        scanf("%d",&b);        S=b;  //b=S;        int k=L[S].cur;        while(k!=L[r].cur&&L[k].data!=b)        {            int p=k;            k=L[k].cur;        }        if(k==L[r].cur){           j=Malloc(L);           L[j].cur=b;           L[j].cur=L[r].cur;           L[r].cur=i;        }        else        {           int p;           L[p].cur=L[k].cur;           Free (L,k);           if(r==k)              r=p;        }     } }  void print(SLinkList &L) {     int i;     for(i=0;i<MAXSIZE;i++)         printf("%d %d \n",L[i].data,L[i].cur); }  int main () {     SLinkList L ;          InitSpace(L);     print(L);      Different(L);     print(L);          return 0; }  int p;           L[p].cur=L[k].cur; 这样操作，很大可能会出错，因为数组越界了呀，p是一个随机值

user: user-3
content: 代码错误修正，增加了打印输出函数，逻辑没整明白，供参考：#include<stdio.h> #include<stdlib.h>  #define MAXSIZE 10  typedef struct LNode {     int data;     int cur; }LNode,SLinkList[MAXSIZE];  void InitSpace(SLinkList &L) {     int i;     for(i=0;i<MAXSIZE-1;i++){         L[i].cur=i+1;         L[i].data=0;     }     L[MAXSIZE-1].cur=0;     L[MAXSIZE-1].data=0; }  int Malloc (SLinkList &L) {     int i;     i=L[0].cur;     if(L[0].cur)        L[0].cur=L[i].cur;     return i; }  void Free(SLinkList &L,int k) {     L[k].cur=L[0].cur;     L[0].cur=k; }  void Different(SLinkList &L) {     //InitSpace(L);     int S;     S=Malloc(L);     int r;     r=Malloc(L);     r=S;     int m=4,n=6,i,j;     for(i=0;i<m;i++)  //这里输入m次     {        j=Malloc(L);        //scanf("%d",L[j].data);        scanf("%d",&L[j].data);        L[r].cur=i;        r=j;     }     L[r].cur=0;     for (i=0;i<n;i++)  //这里循环n次     {        int b;        //scanf("%d",b);        scanf("%d",&b);        S=b;  //b=S;        int k=L[S].cur;        while(k!=L[r].cur&&L[k].data!=b)        {            int p=k;            k=L[k].cur;        }        if(k==L[r].cur){           j=Malloc(L);           L[j].cur=b;           L[j].cur=L[r].cur;           L[r].cur=i;        }        else        {           int p;           L[p].cur=L[k].cur;           Free (L,k);           if(r==k)              r=p;        }     } }  void print(SLinkList &L) {     int i;     for(i=0;i<MAXSIZE;i++)         printf("%d %d \n",L[i].data,L[i].cur); }  int main () {     SLinkList L ;          InitSpace(L);     print(L);      Different(L);     print(L);          return 0; }

user: user-4
content: for (i=0;i<n;i++)  {  int b;  scanf("%d",b);  ---------- 比如这一段，为何把int b;放循环里？ 另外应该是 scanf("%d",&b);  还有你没有任何打印输出，你怎么知道运行成功了没有，多加几个打印语句，打印一下中间值和最后结果吧。