albert_m
2017-10-21 09:00
采纳率: 50%
浏览 2.4k
已采纳

InitList_L()就是初始化函数为什么还提示我L未初始化?

 #include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define ERROR 0
#define OK    1
#define OVERFLOW -2
#define info      0
typedef int ElemType;
typedef int Status;
typedef struct  Lnode {//线性表的链式结构
    ElemType data;
    struct  Lnode *next;
}Node;
typedef struct Lnode *LinkList;
Status InitList_L(LinkList L)  //初始化线性表
{
    L = (LinkList)malloc(sizeof(Lnode));
    if (!L)return ERROR;
    L->next = NULL;
    L->data = info;
    return OK;
}

Status GetElem(LinkList L, int i, ElemType &e)//访问第i个元素并用e返回其值
{
    int j = 1;
    LinkList p;
    p = L->next;

    while (p&&j<i)
    {
        p = p->next;
        p++;
    }
    if (!p || j>i)return ERROR;
    e = p->data;
    return OK;
}
Status  ListInsert_L(LinkList L, int i, ElemType &e)//在第i个位置前插入元素e
{
    LinkList p;
    LinkList s;
    p = L;
    int j = -1;

    while (p&&j < i - 1)
    {
        p = p->next; ++j;
    }
    if (!p || j>i - 1)return ERROR;
    s = (LinkList)malloc(sizeof(Lnode));
    s->data = e;
    s->next = p->next;
    p->next;
    return OK;
}
Status ListDelate_L(LinkList L, int i, ElemType *e)//删除第i个元素,并用e返回其值
{
    LinkList p;
    p = L;
    LinkList q;
    int j = 0;
    while (p->next&&j<i - 1)
    {
        p = p->next; ++j;
    }
    if (!(p->next) || j>i - 1)return ERROR;
    q = p->next;
    p->next = q->next;
    *e = q->data;
    free(q);
    q->next = NULL;
    return OK;
}
Status ListEmpty(LinkList L)//判断表是否为空
{
    if (L->next)
        return ERROR;
    else
        return OK;
}
Status Traversal(LinkList L)  //遍历线性表
{
    int i;
    if (!(L->next))printf("空表\n");
    while (L->next == NULL)
    {
        printf("%d", L->next);
        L = L->next;
    }
    return OK;
}
Status Operatemenu(LinkList L)  //操作菜单
{
    int num;
    printf("\t\t\t------****操作菜单****------\n");
    printf("\t\t\t------    1 访问元素\n");
    printf("\t\t\t------    2 插入元素\n");
    printf("\t\t\t------    3 删除元素\n");
    printf("\t\t\t------    0 退出系统\n\n\n");
    printf("\t\t\t------    请选择你所需要的操作\n");
        scanf("%d", &num);
        switch (num)
        {
        case 1:
            int i0, e0;
            printf("请输入你所访问元素的位置i0=");
            scanf("%d", &i0);
            GetElem(L, i0, e0);
            printf("%d", e0);
            break;
        case 2:
            int i1, e1;
            printf("请输入你所要插入元素的值e1=");
            scanf("%d", &e1);
            printf("请输入你所要插入元素的位置i1=");
                scanf("%d", &i1);
            ListInsert_L(L, i1, e1);
            printf("遍历线性表中...");
                Traversal(L);
            break;
        case 3:
            int i2;
            ElemType *e2;
            printf("请输入你要删除元的位置=");
                scanf("%d",&i2);
            ListDelate_L(L,i2,e2);
            printf("删除成功\n");
            Traversal(L);
            break;
        case 0:
            printf("正在退出\n");
            exit(0);
        default:
            printf("输入有误!┑( ̄Д  ̄)┍\n");

        }
        return OK;
}
int main()
{
    int NodeLength,i,val;
    LinkList p;
    LinkList L;
    InitList_L(L);
    InitList_L(p);
    printf("请输入你要建立线性表的长度\n");
    scanf("%d",&NodeLength);
    for (i = 0; i < NodeLength; i++)  //生成结点
    {
        p = (LinkList)malloc(sizeof(Lnode));
        printf("请为该结点赋值\n");
        scanf("%d", &val);
        p->data = val;
        p->next = L->next;
        L->next = p;
    }

    Traversal(L);
    char opp;
    do
    {
        printf("请输入你所需要的操作\n");
            scanf("%c", &opp);
        Operatemenu(L);

    } while (opp =='Y' || opp == 'y');
    return 0;

}

图片说明

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • JasBin2008 2017-10-21 12:33
    已采纳

    //! 你声明的结构体
    typedef struct Lnode {//线性表的链式结构
    ElemType data;
    struct Lnode *next;
    }Node;

    //! 给你标了下
    Status Traversal(LinkList L) //遍历线性表
    {
    int i;
    if (!(L->next))printf("空表\n");
    while (L->next == NULL) ------------------这里判断条件应该不为NULL
    {
    printf("%d", L->next); ------------------你打印的应该是data
    L = L->next;
    }
    return OK;
    }

    评论
    解决 无用
    打赏 举报
查看更多回答(2条)

相关推荐 更多相似问题