回 帖 发 新 帖 刷新版面

主题:帮忙啊!!严蔚敏的程序不对啊!!运行不了.......

小弟今天把严蔚敏的程序照着录了一遍,不对啊,编译不出错,怎么就是不出结果啊....快教教小弟,急!!!

#include "iostream.h"
#include "stdlib.h"
#define OK 1
#define OVERFLOW -2
#define ERROR 0

typedef int status;
typedef int ElemType;
typedef struct LNode{
    ElemType data;
    struct LNode *next;
}LNode,*ListSq;

status ListInsert_L(ListSq &L,int i,ElemType e)
{
    LNode *p=L;
    int j(0);
    while (p&&j<i-1) {p=p->next;++j;}
    if (!p||j>i-1) return ERROR;
    LNode *s=new LNode;
    s->data=e;
    s->next=p->next;
    p->next=s;
    return OK;
}
void outList(const ListSq &L)
{
    LNode *p=L->next;
    while (p)
    {
        cout<<p->data<<' ';
        p=p->next;
    }
}
void main()
{
    ListSq c;
    ListInsert_L(c,1,1);
    outList(c);
}

回复列表 (共6个回复)

沙发

首先你得创建一个链表才可以插入,空链表当然没结果

板凳

1楼说的正是,请问楼主你的表L是哪个表呀,没有建立怎么插入呀,怎么输出呀,哈哈,先建表L,再说吧

3 楼

创建链表是不是用初始化函数啊.我加了一个初始化函数,也不对啊.你们再帮忙看看吧.我刚学的.不好意思啊.

#include "iostream.h"
#include "stdlib.h"
#define OK 1
#define OVERFLOW -2
#define ERROR 0

typedef int status;
typedef int ElemType;
typedef struct LNode{
    ElemType data;
    struct LNode *next;
}LNode,*ListSq;

status ListInsert_L(ListSq &L,int i,ElemType e)
{
    LNode *p=L;
    int j(0);
    while (p&&j<i-1) {p=p->next;++j;}
    if (!p||j>i-1) return ERROR;
    LNode *s=new LNode;
    s->data=e;
    s->next=p->next;
    p->next=s;
    return OK;
}
void outList(const ListSq &L)
{
    LNode *p=L->next;
    while (p)
    {
        cout<<p->data<<' ';
        p=p->next;
    }
}
status initList(ListSq &L)
{
    L->next=new LNode;
    if (!L->next) exit(OVERFLOW);
    L->next->data=0;
    return OK;
}

void main()
{
    ListSq c;
    initList(c);
    ListInsert_L(c,1,2);
    outList(c);
}

4 楼

建表程序有错呀,应该改成如下的就行了:
status initList(ListSq &L)
{
    L=new LNode;
    if (!L->next) exit(OVERFLOW);
    L->next=NULL;
    return OK;
}
//你没有把L-next=NULL;当然错了

5 楼

#include "iostream.h"
#include "stdlib.h"
#define OK 1
#define OVERFLOW -2
#define ERROR 0

typedef int status;
typedef int ElemType;
typedef struct LNode{
    ElemType data;
    struct LNode *next;
}LNode,*ListSq;

status ListInsert_L(ListSq &L,int i,ElemType e)
{
    LNode *p=L;
    int j(0);
    while (p&&j<i-1) {p=p->next;++j;}
    if (!p||j>i-1) return ERROR;
    LNode *s=new LNode;
    s->data=e;
    s->next=p->next;
    p->next=s;
    return OK;
}
void outList(const ListSq &L)
{
    LNode *p=L->next;
    while (p)
    {
        cout<<p->data<<' ';
        p=p->next;
    }
}
status initList(ListSq &L)
{
    L=new LNode;
    if (!L->next) exit(OVERFLOW);
    L->next=NULL;
    return OK;
}

void main()
{
    ListSq c;
    initList(c);
    ListInsert_L(c,1,2);
    outList(c);
}
//改了一点点而已,你看一下吧

6 楼

创建链表函数应该为:
status initList(ListSq &L)
{
    L=(ListSq)malloc(sizeof(ElemType));
    if (!L) exit(OVERFLOW);
    L->next=NULL;
    return OK;
}

你这个程序最大的问题还在于,程序里面根本就没有输入函数,试问你的插入函数用来插入什么东西的.
这些都是数据结构里面的算法吧
你应该把它们都改成C或C++语言,方可运行

我来回复

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