写一个单链表的基本操作

写一个单链表的基本操作,在写find之前都能运行。但是写到值查找之后,再给主函数加上输出函数的时候,无论怎样都运行不出主函数里的输出函数,find函数也到不了,即使把函数调用了也不能进入find函数体里面。

img

麻烦贴一下代码,方便调试

find函数最后一个for语句最后应该是i++,你写成了j++。由于i值没有变,且i<=j成立,所以成死循环了


#include<stdio.h>
#define MAXSIZE 20                                            //MAXSIZE为线性表中的最大元素个数

typedef struct list                                         //建表
{
    int elem[MAXSIZE];                                        
    int last;                                                //线性表中最后一个元素在数组elem中的下标值
}Seqlist;

void creat(Seqlist *p)                                        //线性表数据的输入
{
    int i=0,n,f;                                                //n为用户输入数据的个数,f是中间存储变量
    printf("请输入数据的个数:");
    scanf("%d",&n);
    p->last=n-1;
    while(i<n)
    {
        printf("请输入第%d个数字:",i+1);
        scanf("%d",&f);
        p->elem[i]=f;
        i++;
    }

}

void printf1(Seqlist *p)                                    //输出线性表数据
{
    int i;
    for(i=0;i<=p->last;i++)
    {
        printf("%d    ",p->elem[i]);
        printf("last=%d\n",i);
    }
}

void find(Seqlist *p)                                //按值查找,在线性表L中查找值为e的值
{
    int i=0,j=0;
    int e;
    int Find[MAXSIZE];                                //Find[MAXSIZE]记录查找值e的位置(下标值+1)
    printf("请输入要查找的数值:");
    scanf("%d",&e);
    printf("您所查找的值%d在线性表中的位置为:/n",e);
    while(i<=p->last)
    {
        if(e=p->elem[i])
        {
            Find[j]=i+1;
            j++;
        }
        i++;
    }
    if(j!=0)
    {
        for(i=0;i<=j;i++)
        {
            printf("last=%d\n",Find[i]);
        }
    }
    else
        printf("您所查找的数值e不在此线性表中!/n");
}

void main()
{

    int choose=0;
    Seqlist p;
    printf("              以下是对顺序表的操作\n");
    printf("-------------------------------------------------------\n");
        printf("          1.              在顺序表插入数据\n");
        printf("          2.              在顺序表中删除数据\n");
    printf("          3.              输出顺序表中的数据\n");
    printf("          4.              查询顺表表中单独的数据\n");
    printf("-------------------------------------------------------\n");
    printf("              请选择你的操作:");
    scanf("%d",&choose);
    switch(choose)
    {
    case 4:find(&p);
            break;
    }
}