学生表的创建及操作,学生党们找找逻辑错误


#include<stdio.h>
#include<malloc.h>
#include<string.h>

struct student
{
    char num[12];
    char name[8];
    char sex;
    int score;
};
typedef struct student ElemType;

typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;

int InitList(LinkList &L)
{
    L=new LNode;
    L->next=NULL;
    return 1;
}

int DestoryList(LinkList &L)
{
    LNode *p;
    while(L)
    {
        p=L;
        L=L->next;
        delete p;
    }
    return 1;
}

int LengthList(LinkList &L)
{
    int j=0;
    LNode *p;
    p=L->next;
    while(p)
    {
        j++;
        p=p->next;
    }
    return j;
}

int GetElem(LinkList L,int i,ElemType &e)
{
    LNode *p;
    p=L->next;
    int j=1;
    while(p&&j<i)
    {
        j++;
        p=p->next;
    }
    if(!p||j>i)
        return 0;
    e=p->data;
    return 1;
}

int Locate(LinkList &L,ElemType e)
{
    LNode *p;
    p=L->next;
    int j=1;
    while(p&&p->data.num!=e.num)
    {
        j++;
        p=p->next;
    }
    return j;
}


int ListInsert(LinkList &L,int i,ElemType e)
{
    LNode *p,*s;
    p=L;
    int j=0;
    while(p&&j<i-1)
    {
        j++;
        p=p->next;
    }
    if(!p||j>i-1)
        return 0;
    s=new LNode;
    s->data=e;
    s->next=p->next;
    p->next=s;
    return 1;
}

int ListDelete(LinkList &L,int i)
{
    LNode *p,*q;
    p=L;
    int j=0;
    while(p->next&&j<i-1)
    {
        j++;
        p=p->next;
    }
    if(!(p->next)||j>i-1)
        return 0;
    q=p->next;
    p->next=q->next;
    delete q;
    return 1;
}

void ShowList(LinkList &L)
{
    LNode *p;
    p=L->next;
    while(p)
    {
        printf("%s\t%s\t%s\t%d\n",p->data.num,p->data.name,p->data.sex,p->data.score);
        p=p->next;
    }
}

int main()
{
    LinkList L;
    int i;
    ElemType student[3]={{"001","jack",'m',90},{"002","wang",'f',65},{"003","song",'m',77}};
    InitList(L);
    for(i=0;i<3;i++)
    {
        if(ListInsert(L,i+1,student[i]))//调用插入函数插入学生信息 
            printf("第%d个元素插入成功!\n",i+1);
        else
            printf("插入不成功!\n");
        
    }
    printf("学生人数=%d\n",LengthList(L));
    
    printf("学号\t姓名\t性别\t成绩\n");
    ShowList(L);
    
    printf("请输入要删除元素的位置:");
    scanf("%d",&i);
    ListDelete(L,i);
    printf("删除之后的链表:\n学号\t姓名\t性别\t成绩\n");
    ShowList(L);
    return 0;        
}




img

朋友你的sex是char的话,输出换成%c而不是%s看看