主题:不知道是什么错误
#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
int Initlist_L(LinkList &L)
{
L=(struct LNode *)malloc(sizeof(struct LNode));
printf("动态链表已创建\n");
return -1;
}
int printlist_L(LinkList &L)
{
if(L->next=NULL)
{
printf("空链表\n");
return 0;
}
else
{
printf("链表元素如下:");
printf("%d",L->data);
printf("\n");
return 1;
}
}
int ListInsert_L(LinkList &L,int i,int e)
{
struct LNode *s;
struct LNode *p=L;
int j=0;
while(p&&j<i-1)
{
p=p->next;++j;
}
if(!p||j>i-1)return 0;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;s->next=p->next;p->next=s;
return 1;
}
int ListDelete_L(LinkList &L,int i,int &e)
{
struct LNode *p=L,*q;
int j=0;
while(p->next&&j<i-1)
{
p=p->next;++j;
}
if(!(p->next)||j>i-1)return 0;
q=p->next;
p->next=q->next;
e=q->data;
free(q);
return 1;
}
int GetElem_L(LinkList L,int i,int &e)
{
struct LNode *p=L->next;
int j=1;
while(p&&j<i)
{
p=p->next;
++j;
}
if(!p||j>i)return 0;
e=p->data;
return 1;
}
void main()
{
LinkList L;
int k,i,e;
do
{
printf("\n动态链表的实现\n");
printf("1--创建一个链表\n");
printf("2--显示\n");
printf("3--插入\n");
printf("4--删除\n");
printf("5--查找\n");
printf("0--返回\n");
printf("请选择主菜单0--5:");
scanf("%d",&k);
switch(k)
{
case 1:Initlist_L(L);break;
case 2:printlist_L(L);break;
case 3:printf("请输入插入元素的位置:");
scanf("%d",&i);
printf("请输入插入的元素:");
scanf("%d",&e);
ListInsert_L(L,i,e);
break;
case 4:printf("请输入删除元素的位置:");
scanf("%d",&i);
ListDelete_L(L,i,e);
break;
case 5:printf("请输入查找的元素:");
scanf("%d",&e);
printf("值为%d的元素在链表中的位置为%d.\n");
GetElem_L(L,i,e);
break;
case 0:printf("返回\n");break;
default:printf("输入出错.\n");
}
}while(k!=0);
}
不知道是什么错误 调试没有错,也可以运行,但无法输出.
觉得是构建或是输出函数有问题,但就是不知道怎么改.哪位高手帮忙看一下.
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
int Initlist_L(LinkList &L)
{
L=(struct LNode *)malloc(sizeof(struct LNode));
printf("动态链表已创建\n");
return -1;
}
int printlist_L(LinkList &L)
{
if(L->next=NULL)
{
printf("空链表\n");
return 0;
}
else
{
printf("链表元素如下:");
printf("%d",L->data);
printf("\n");
return 1;
}
}
int ListInsert_L(LinkList &L,int i,int e)
{
struct LNode *s;
struct LNode *p=L;
int j=0;
while(p&&j<i-1)
{
p=p->next;++j;
}
if(!p||j>i-1)return 0;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;s->next=p->next;p->next=s;
return 1;
}
int ListDelete_L(LinkList &L,int i,int &e)
{
struct LNode *p=L,*q;
int j=0;
while(p->next&&j<i-1)
{
p=p->next;++j;
}
if(!(p->next)||j>i-1)return 0;
q=p->next;
p->next=q->next;
e=q->data;
free(q);
return 1;
}
int GetElem_L(LinkList L,int i,int &e)
{
struct LNode *p=L->next;
int j=1;
while(p&&j<i)
{
p=p->next;
++j;
}
if(!p||j>i)return 0;
e=p->data;
return 1;
}
void main()
{
LinkList L;
int k,i,e;
do
{
printf("\n动态链表的实现\n");
printf("1--创建一个链表\n");
printf("2--显示\n");
printf("3--插入\n");
printf("4--删除\n");
printf("5--查找\n");
printf("0--返回\n");
printf("请选择主菜单0--5:");
scanf("%d",&k);
switch(k)
{
case 1:Initlist_L(L);break;
case 2:printlist_L(L);break;
case 3:printf("请输入插入元素的位置:");
scanf("%d",&i);
printf("请输入插入的元素:");
scanf("%d",&e);
ListInsert_L(L,i,e);
break;
case 4:printf("请输入删除元素的位置:");
scanf("%d",&i);
ListDelete_L(L,i,e);
break;
case 5:printf("请输入查找的元素:");
scanf("%d",&e);
printf("值为%d的元素在链表中的位置为%d.\n");
GetElem_L(L,i,e);
break;
case 0:printf("返回\n");break;
default:printf("输入出错.\n");
}
}while(k!=0);
}
不知道是什么错误 调试没有错,也可以运行,但无法输出.
觉得是构建或是输出函数有问题,但就是不知道怎么改.哪位高手帮忙看一下.