有一个问题,不知道是软件的问题,还是语法的问题,有些代码总是运行不出来
#include<stdio.h>#include<stdlib.h>
typedef int ElmeType;
typedef struct node{
ElmeType data;
struct node *next;
}SLinkNode;
//链表的初始化
void InitList(SLinkNode *&L)
{
L=(SLinkNode*)malloc(sizeof(SLinkNode));
L->data=NULL;
}
//在第i个位置上插入数值为x的元素
int InsElem(SLinkNode *&L, ElmeType x,int i)
{ int j=0;
SLinkNode *p=L,*s;
if(i<=0)return 0;
if(p!=NULL&&j<i-1)
{
j++;
p=p->next;
}
if(p==NULL)return 0;
else{
s=(SLinkNode*)malloc(sizeof(SLinkNode));
s->data=x;
s->next=p->next;
p->next=s;
return 1;
}
}
//链表的输出
void DispList(SLinkNode *L)
{
SLinkNode *p=L->next;
while(p!=NULL)
{
printf("%d\t",p->data);
p=p->next;
}
printf("\n");
}
//单链表的销毁
void DestryList(SLinkNode *L)
{
SLinkNode *p,*pre=L;
p=pre->next;
while(p!=NULL)
{
free(pre);
pre=p;
p=p->next;
}
free(pre);
}
//求单链表的长度
int GetLength(SLinkNode *L)
{
int j=0;
SLinkNode *p;
p=L->next;
while(p!=NULL)
{
j++;
p=p->next;
}
return j;
}
//求第i个元素
int GetElem(SLinkNode *L,int i, ElmeType &e)
{
SLinkNode *p=L;
int j=0;
if(i<=0)return 0;
while(p!=NULL&&j<i)
{
j++;
p=p->next;
}
if(p==NULL)return 0;
else
{
e=p->data;
return 1;
}
}
//以上是头文件的代码
#include"SLinkNode.h"
void main()
{
SLinkNode *L;
InitList(L);
int i;
int cd;
ElmeType e;
InsElem(L, 0,1);
InsElem(L, 10,2);
InsElem(L, 20,3);
InsElem(L, 30,4);
InsElem(L, 40,5);
InsElem(L, 50,6);
InsElem(L, 60,7);
InsElem(L, 70,8);
InsElem(L, 80,9);
InsElem(L, 90,10);
printf("线性表:");DispList(L);
cd=GetLength(L);
printf("输出此单链表的长度:%d\n",cd);
i=3;
GetElem(L,3, e);
printf("第3个数:%d",e);
DestryList(L);
}
//这里是主文件
线性表:0 90 80 70 60 50 40 30 20 10 Press any key to continue
//这是运行结果
我是用VC6做的。但是不知道怎么回事这个输出结果只有最上面显示输出元素的,之后的输出不知道为什么一直不显示