| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 212 人关注过本帖
标题:求助:定长顺序线性表 编译错误
只看楼主 加入收藏
qlf40826946
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-7-25
收藏
 问题点数:0 回复次数:3 
求助:定长顺序线性表 编译错误
/*
ADT SqList{
   数据对象:D={ai|ai∈ElemSet,i=1,2,...,n, n≧0}
   数据关系:Rl={<ai-1,ai>|ai-1,ai∈D,i=1,2,...n;}
   基本操作:
      InitList_SL(&L)
         操作结果: 构造一个空的顺序表L。
      ListEmpty_SL(&L)
         操作结果: 若L为空表则返回TRUE,否则返回FALSE。
      GetElem_SL(&L,i,&e)
         操作结果: 用e返回L中第i个数据元素值。
      LocateElem_SL(&L,e,compare())
         操作结果: 返回L中第一个与e满足compare()数据元素的位序。若这样的元素不存在,则返回值为0。
      PriorElem_SL(&L,cur_e,&pre_e)
         操作结果: 若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱,否则操作失败,pre_e无定义。
      NextElem_SL(&L,cur_e,&next_e)
         操作结果: 若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,否则操作失败,next_e无定义。
      ListInsert_SL(&L,i,e)
         操作结果: 在L中第i个数据元素之前插入新的数据元e,L的长度加1。
      ListDelete_SL(&L,i,&e)
         操作结果: 删除L的第i个数据元素,并用e返回其值,L的长度减1。
      ListTraverse_SL(&L,visit())
         操作结果: 依次对L的每个元素调用函数visit()。一旦visit()失败,则操作失败。
}ADT SqList
*/

#include "stdio.h"
#include "conio.h"
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define INFEASIBLE -2
#define MAXLSIZE 10
typedef int Status;
typedef int SLElemType;
typedef int SqList[MAXLSIZE+1];

void InitList_SL(SqList L)
{
   int j;
   for(j=0;j<MAXLSIZE+1;j++)
      L[j]=0;
}

Status ListEmpty_SL(SqList L)
{
   if(L[0]==0) return TRUE;
   return FALSE;
}

Status GetElem_SL(SqList L,int i,SLElemType *ep)
{
   int j;
   if(i<1||i>L[0]) return ERROR;
   *ep=L[i];
   return OK;
}

int LocateElem_SL(SqList L,SLElemType e,Status (*compare)())
{
   int j=1;
   while(j<=L[0])
   {
      if(compare(L[j],e)==0) break;
      j++;
   }
   if(j>L[0]) return 0;
   return j;
}

Status PriorElem_SL(SqList L,SLElemType cur_e,SLElemType *pre_eptr)
{
   int j=1;
   while(j<=L[0])
   {
      if(cur_e==L[j]) break;
      j++;
   }
   if(j>L[0]||j==1) return ERROR;
   *pre_eptr=L[j-1];
   return OK;
}

Status NextElem_SL(SqList L,SLElemType cur_e,SLElemType *next_eptr)
{
   int j=1;
   while(j<L[0])
   {
      if(cur_e==L[j]) break;
      j++;
   }
   if(j>=L[0]) return ERROR;
   *next_eptr=L[j+1];
   return OK;
}  

Status ListInsert_SL(SqList L,int i,SLElemType e)
{
   int j;
   if(i<1||i>L[0]+1) return ERROR;
   if(L[0]==MAXLSIZE) return ERROR;
   if(i==L[0]+1)
      L[i]=e;
   else
   {
      for(j=L[0];j>=i;j--)
         L[j+1]=L[j];
      L[i]=e;
   }
   L[0]++;
   return OK;
}

Status ListDelete_SL(SqList L,int i,SLElemType *ep)
{
   int j;   
   if(i<1||i>L[0]) return ERROR;
   *ep=L[i];
   for(j=i;j<=L[0]-1;j--)  
      L[j]=L[j+1];
   L[0]--;
   return OK;
}

Status ListTraverse_SL(SqList L,Status (*visit)())
{
   int j;
   for(j=0;j<=L[0];j++)
      if(!visit(L[j])) return ERROR;
   return OK;
}               

int main(void)
{
   SqList L;
   SLElemType e,*ep;
   int n,j,i=1;
   printf("Init SqList..\n");
   InitList_SL(L);
   printf("Input amount of node:");
   scanf("%d",&n);
   printf("Make SqList..\n");
   while(n>0)
   {
      printf("Input data of node:");
      scanf("%d",&e);
      ListInsert_SL(L,i++,e);
      n--;
   }
   printf("Now the SqList is:\n");
   j=1;
   while(j<=L[0])
   {
      printf("%d\t",L[j]);
      j++;
   }
   printf("\n");
   printf("The length is:%d\n",L[0]);
   printf("Delete SqList..\n");
   ep=&e;
   ListDelete_SL(L,1,ep);
   printf("Now the SqList is:\n");
   j=1;
   while(j<=L[0])
   {
      printf("%d\t",L[j]);
      j++;
   }
   printf("\n");
   printf("The length is:%d\n",L[0]);
   printf("End!\n");
   getch();   
}

2011-07-25 16:07
qlf40826946
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-7-25
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

如果设置结点数为1 结果没有出错
2011-07-25 16:09
qlf40826946
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-7-25
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

如果结点数>=2 就出现错误 如图
2011-07-25 16:10
qlf40826946
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-7-25
收藏
得分:0 
有会的吗,悲哀啊,这都不会
2011-07-25 16:49
快速回复:求助:定长顺序线性表 编译错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020742 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved