| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 658 人关注过本帖
标题:请教,这个线性表的顺序结构的程序错在哪里?
只看楼主 加入收藏
taowho
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-10-4
结帖率:0
收藏
 问题点数:0 回复次数:2 
请教,这个线性表的顺序结构的程序错在哪里?
#include <stdio.h>
#include<stdlib.h>
#define MaxLen 100
typedef int ElemType;
typedef struct {
    ElemType data[MaxLen];
    int length;
}sqList;
sqList L;
void main()
{   
     void Initlist(&L);
     int Getlen(&L);
     ElemType Getelem(&L);
     void Locate(&L);
     void Inselem(&L);
     void Delelem(&L);
     void output(&L);
}
void Initlist(sqList *L)
{
    L->length=0;
        printf("\t Null!\n");
        getchar();
}
int Getlen(sqList *L)
{   
    return L->length;
}
ElemType Getelem(sqList *L)
{   
    int i;
    printf("请输入数据:\n");
    scanf("%d",&i);
    getchar();
    if (i<1||i>L->length)
    {      
          printf("error");
       exit(1);
    }
    return L->data[i-1];
}
void Locate(sqList *L)
{
  int i=0;  
  ElemType x;
  printf("请输入你要查找的位置:\n");
  scanf("%d",&x);
  getchar();
  while(i<L->length&&L->data[i]!=x)
      i++;
  if(i<L->length)
  {  
     printf("请输入你要查找的位置是%d\n",i+1);
  }
  else
     printf("找不到该位置\n");
  getchar();
}
void Inselem(sqList *L)
{ int i,j;
  ElemType x;
  printf("请输入你要插入的数据和位置\n");
  scanf("%d %d",&i,&x);
  if(i<1||i>L->length+1)
  { printf("Error!");
    exit(1);
  }
  if(L->length==MaxLen)
  { printf("overflow!");
  exit(1);
  }
  for(j=L->length;j>=i;j--)
      L->data[j]=L->data[j-1];
  L->data[i-1]=x;
  L->length++;
  printf("\t Null!!");
  getchar();
void Delelem(sqList *L)
{  
   int i=0,j=0;
   printf("请输入你想要删除的数据\n");
   scanf("%d",&i);
   getchar();
   if(i<1||i>L->length)
   { printf("not found!");exit(0);}
   for(j=i;j=L->length-1;j++)
       L->data[j-1]=L->data[j];
   L->length--;
   printf("\tNull!!");
   getchar();
}
void output(sqList *L)
{
    int i;
    for (i=0;i<Getlen(L);i++)
    {      
                printf("输入顺序表:\n");
        printf("%d",L->data[i]);
    }
}
搜索更多相关主题的帖子: include return 线性表 
2011-10-04 17:41
q982004342
Rank: 2
等 级:论坛游民
帖 子:19
专家分:25
注 册:2011-9-9
收藏
得分:0 
首先你写的代码真伟大,写的你自己可能都不认识了吧!写代码时候你自己像那种++,--的再纸上画一画就很清楚了,然后在你这个程序中一个重要问题是你对位置和元素这两个词不分,我不敢佩服你的汉语!!不说了上代码!优化你自己去搞,现在给你搞得能运行了,没错。一定要注意逻辑!你连表中什么都没有就调用长度获取函数!佩服!然后就是不对定义的函数声明!!问题多得没话说!不说了上代码!!我很讨厌你的那句 // printf("\tNull!!");// getchar();你很喜欢这两句话吗,没做完一个函数你就来个输出null,真不知道你想干嘛?!!!
程序代码:
#include <stdio.h>
#include<stdlib.h>
#define MaxLen 100
typedef int ElemType;
typedef struct {
    ElemType data[MaxLen];
    int length;
}sqList;
sqList L;
void Initlist(sqList *L);
int Getlen(sqList *L);
ElemType Getelem(sqList *L);
void Locate(sqList *L);
void Inselem(sqList *L);
void Delelem(sqList *L);
void output(sqList *L);
void main()
{  
      Initlist(&L);
     
      Getelem(&L);
      Getlen(&L);
      Locate(&L);
      Inselem(&L);
      Delelem(&L);
      output(&L);
}
void Initlist(sqList *L)
{
    L->length=0;
        printf("\t Null!\n");
        //getchar();
}
int Getlen(sqList *L)
{  
    return L->length;
}
ElemType Getelem(sqList *L)
{  
    int i,j=0;
    while(i)
{
    printf("请输入数据:\n");
    scanf("%d",&i);
    L->data[j++]=i;

    (L->length)++;
   
}

    /*getchar();
    if (i<1||i>L->length)
    {     
          printf("error");
       exit(1);
    }*/
     return L->data[i-1];
   
   
}
void Locate(sqList *L)
{
  int i=0; 
  ElemType x;
  printf("请输入你要查找的元素:\n");
  scanf("%d",&x);
  //getchar();
  while(i<L->length&&L->data[i]!=x)
      i++;
  if(i<L->length)
  { 
    
     printf("你要查找的位置是%d\n",i);
  }
  else
     printf("找不到该位置\n");
  //getchar();
}
void Inselem(sqList *L)
{ int i,j;
  ElemType x;
  printf("请输入你要插入的位置和数据\n");
  scanf("%d%d",&i,&x);
  if(i<1||i>L->length)
  { printf("Error!");
    exit(1);
  }
  if(L->length==MaxLen)
  { printf("overflow!");
  exit(1);
  }
  for(j=L->length;j>=i;j--)
      L->data[j+1]=L->data[j];
  L->data[i]=x;
  L->length++;

 // output(L);
  //printf("\t Null!!");
  //getchar();
}
void Delelem(sqList *L)
{ 
   int i=0,j=0;
   printf("请输入你想要删除的数据位置\n");
   scanf("%d",&i);
   //getchar();
   if(i<1||i>L->length)
   { printf("not found!");exit(0);}
   for(j=i;j<=L->length-1;j++)
       L->data[j-1]=L->data[j];
   L->length--;
  // printf("\tNull!!");
  // getchar();
}
void output(sqList *L)
{
    int i;
    for (i=0;i<Getlen(L);i++)
    {      
                //printf("输入顺序表:\n");
        printf("%d",L->data[i]);

    }
    printf("\n");
} 
再给你上幅图!欧了
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-10-06 12:57
taowho
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-10-4
收藏
得分:0 
回复 2楼 q982004342
谢谢,人家才刚学,很多不足的地方,所以才要来请教,请您口气不要太过!谢谢。。
2011-10-08 13:03
快速回复:请教,这个线性表的顺序结构的程序错在哪里?
数据加载中...
 
   



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

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