回 帖 发 新 帖 刷新版面

主题:这个程序哪里出现了问题?请高手指教!

#define Maxsize 50
#include <stdio.h>
typedef char ElemType;
struct List {
    ElemType list[Maxsize];
    int size;

};



void setnull(struct List *p)
{
    p->size=0;
}
int length (struct List *p)
{
    return (p->size);

}
ElemType get (struct List *p,int i)
{
    if (i<1 && i>p->size)
        printf("error");
    else 
        return(p->list[i-1]);
}
int locate(struct List *p,ElemType x)
{
    int i=0;
    while (i<p->size && p->list [i]!=x)i++;
    if(i==p->size)
        return (-1);
    else
        return(i+1);
}
void insert(struct List *p,ElemType x,int i)
{
    int j;
    if (i<1 && i>p->size+1)
        printf("error");
    else 
    {
        p->size++;
        for(j=p->size-1;j>=i;j--)
            p->list[j]=p->list[j-1];
        p->list[j]=x;
    }
}
            
  int delete(struct List *P,int i)
    {
        int j;
        if(i>p->size||i<1)
          printf("error");
        else
        {
            for(j=i-1;j<p->size-1;j++)
                p->list[j]=p->list[j+1];
                p->size--;
        }
        return 0;
    }

  void    display (struct List *p)
    {
        int j;
        if(p->size==0)
            printf("error");
        else
        {
            printf("循序表:");
            if (p->size==1)
                    printf("%c",p->list[p->size]);
            else{
                for(j=0;j<p->size-1;j++)
                    printf("%c->",p->list[j]);
                printf("%c",p->list[j]);
            }
            printf("\n");
    }
    }

                
        
   void main()
    {
        struct List L;
        setnull (&L);
        insert(&L,'a',1);
        insert(&L,'b',2);
        insert(&L,'a',1);
        insert(&L,'c',2);
        insert(&L,'d',1);
        insert(&L,'e',2);
        display(&L);
        printf("值:%c 位置:%d\n",'a',locate(&L,'a'));
        printf("位置:%d 值:%c\n",4,get(&L,4));
        printf("删除第2个结点后");
        delete (&L,2);
        display(&L);
        printf("删除第2个结点后");
        delete(&L,2);
        display(&L);
        printf("删除第1个结点后");
        delete(&L,1);
        display(&L);
        printf("删除第1个结点后");
        delete(&L,1);
        display(&L);
        
            
    }            
            

回复列表 (共1个回复)

沙发

#define Maxsize 50
#include <stdio.h>
typedef char ElemType;
struct List {
    ElemType list[Maxsize];
    int size;

};



void setnull(struct List *p)
{
    p->size=0;
}
int length (struct List *p)
{
    return (p->size);

}
ElemType get (struct List *p,int i)
{
    if (i<1 && i>p->size)
    {
        printf("error");
        return 0;
    }
    else 
        return(p->list[i-1]);
}
int locate(struct List *p,ElemType x)
{
    int i=0;
    while (i<p->size && p->list [i]!=x)i++;
    if(i==p->size)
        return (-1);
    else
        return(i+1);
}
void insert(struct List *p,ElemType x,int i)
{
    int j;
    if (i<1 && i>p->size+1)
        printf("error");
    else 
    {
        p->size++;
        for(j=p->size-1;j>=i;j--)
            p->list[j]=p->list[j-1];
        p->list[j]=x;
    }
}
            
int delete1(struct List *p,int i)
    {
        int j;
        if(i>p->size||i<1)
          printf("error");
        else
        {
            for(j=i-1;j<p->size-1;j++)
                p->list[j]=p->list[j+1];
                p->size--;
        }
        return 0;
    }

void  display (struct List *p)
    {
        int j;
        if(p->size==0)
            printf("error");
        else
        {
            printf("循序表:");
            if (p->size==1)
                    printf("%c",p->list[p->size]);
            else{
                for(j=0;j<p->size-1;j++)
                    printf("%c->",p->list[j]);
                printf("%c",p->list[j]);
            }
            printf("\n");
    }
    }

                
        
void main()
    {
        struct List L;
        setnull (&L);
        insert(&L,'a',1);
        insert(&L,'b',2);
        insert(&L,'a',1);
        insert(&L,'c',2);
        insert(&L,'d',1);
        insert(&L,'e',2);
        display(&L);
        printf("值:%c 位置:%d\n",'a',locate(&L,'a'));
        printf("位置:%d 值:%c\n",4,get(&L,4));
        printf("删除第2个结点后");
        delete1 (&L,2);
        display(&L);
        printf("删除第2个结点后");
        delete1(&L,2);
        display(&L);
        printf("删除第1个结点后");
        delete1(&L,1);
        display(&L);
        printf("删除第1个结点后");
        delete1(&L,1);
        display(&L);
        getchar();
            
    }

我来回复

您尚未登录,请登录后再回复。点此登录或注册