主题:帮忙啊!!严蔚敏的程序不对啊!!运行不了.......
C85Fan
[专家分:170] 发布于 2006-03-17 20:42:00
小弟今天把严蔚敏的程序照着录了一遍,不对啊,编译不出错,怎么就是不出结果啊....快教教小弟,急!!!
#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个回复)
沙发
yrd2002 [专家分:1000] 发布于 2006-03-18 08:59:00
首先你得创建一个链表才可以插入,空链表当然没结果
板凳
linyuetian [专家分:310] 发布于 2006-03-18 10:42:00
1楼说的正是,请问楼主你的表L是哪个表呀,没有建立怎么插入呀,怎么输出呀,哈哈,先建表L,再说吧
3 楼
C85Fan [专家分:170] 发布于 2006-03-18 13:46:00
创建链表是不是用初始化函数啊.我加了一个初始化函数,也不对啊.你们再帮忙看看吧.我刚学的.不好意思啊.
#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 楼
linyuetian [专家分:310] 发布于 2006-03-18 16:18:00
建表程序有错呀,应该改成如下的就行了:
status initList(ListSq &L)
{
L=new LNode;
if (!L->next) exit(OVERFLOW);
L->next=NULL;
return OK;
}
//你没有把L-next=NULL;当然错了
5 楼
linyuetian [专家分:310] 发布于 2006-03-18 16:26:00
#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 楼
海上飞洪 [专家分:520] 发布于 2006-03-23 10:54:00
创建链表函数应该为:
status initList(ListSq &L)
{
L=(ListSq)malloc(sizeof(ElemType));
if (!L) exit(OVERFLOW);
L->next=NULL;
return OK;
}
你这个程序最大的问题还在于,程序里面根本就没有输入函数,试问你的插入函数用来插入什么东西的.
这些都是数据结构里面的算法吧
你应该把它们都改成C或C++语言,方可运行
我来回复