| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 462 人关注过本帖
标题:【高手进来看下】一个小小的顺序表错误
只看楼主 加入收藏
C_snow
Rank: 1
等 级:新手上路
帖 子:34
专家分:3
注 册:2010-2-18
结帖率:100%
收藏
已结贴  问题点数:13 回复次数:2 
【高手进来看下】一个小小的顺序表错误
这是我建的一个顺序表
运行程序后出了点问题  怎么回事???

图片附件: 游客没有浏览图片的权限,请 登录注册



#include <stdio.h>
#include <stdlib.h>
#define MAXNUM 100
typedef struct
{
 char name[20];
 char sex[10];
 int age;      
}elemtype;
elemtype List[MAXNUM];
int num=-1;
/*
typedef struct
{
 elemtype List[MAXNUM];
 int num;        
}listtype;
*/
int main()
{
 void Create(elemtype List[],int *num,int n);//建表   
 int Insert(elemtype List[],int *num,int i);//插入
 int Delete(elemtype List[],int *num,int i);//删除
 void Print(elemtype List[],int *num);//输出
 
 elemtype T;
 int n;
 int i,j;
 printf("Please input number:\n");
 scanf("%d",&n);
 Create(&T,&num,n);
 Print(&T,&num);
 
 printf("请输入你要插得位置\n");
 scanf("%d",&i);
 if(Insert(&T,&num,i))
    Print(&T,&num);
 printf("请输入你要删除的位置\n");
 scanf("%d",&j);
 if(Delete(&T,&num,j))
    Print(&T,&num);
 getchar();
 return 0;
}

void Create(elemtype List[],int *num,int n)
{
  if(n>MAXNUM-1||*num>MAXNUM-1)
  {
   printf("顺序表已满!\n");         
  }
  for(int i=0;i<n;i++)
  {
  printf("请输入姓名:\n");
  scanf("%s",&List[++*num].name);
  getchar();
  printf("请输入性别:\n");
  scanf("%s",&List[*num].sex);
  getchar();
  printf("请输入年龄:\n");
  scanf("%d",&List[*num].age);   
  getchar();
  printf("\n\n");
  }
}

void Print(elemtype List[],int *num)
{
 for(int i=0;i<=*num;i++)
 {
   printf("%s\n",List[i].name);   
   printf("%s\n",List[i].sex);  
   printf("%d\n",List[i].age);  
   printf("\n");
 }  
}

int Insert(elemtype List[],int *num,int i)
{
 elemtype x;
 int j;
 if(i<0||i>*num+1)
 {
  printf("i 值不合法\n");
  return 0;                 
 }   
 if(*num>MAXNUM-1)
 {
  printf("表满不能插入\n");
  return 0;                 
 }
 printf("输入你要新插入的表信息:\n");
 printf("请输入姓名:\n");
  scanf("%s",&x.name);
  getchar();
  printf("请输入性别:\n");
  scanf("%s",&x.sex);
  getchar();
  printf("请输入年龄:\n");
  scanf("%d",&x.age);   
  getchar();
  printf("\n\n");
 for(j=*num;j>=i;j--) List[j+1]=List[j];
 List[i]=x;
 (*num)++;
 return 1;
}


 int Delete(elemtype List[],int *num,int i)
 {
  int k;
  if(i<0||i>*num+1)
  {
  printf("i 值不合法\n");
  return 0;                 
  }
  for(k=i;k<*num;k++) List[k]=List[k+1];   
  (*num)--;
  return 1;
 }

搜索更多相关主题的帖子: 顺序 小小的 
2010-12-04 14:57
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:13 
int main()
{
    void Create(elemtype List[],int *num,int n);//建表   
    int Insert(elemtype List[],int *num,int i);//插入
    int Delete(elemtype List[],int *num,int i);//删除
    void Print(elemtype List[],int *num);//输出

    //elemtype T;
    int n;
    int i,j;
    printf("Please input number:\n");
    scanf("%d",&n);
    Create(List,&num,n);
    Print(List,&num);

    printf("请输入你要插得位置\n");
    scanf("%d",&i);
    if(Insert(List,&num,i))
        Print(List,&num);
    printf("请输入你要删除的位置\n");
    scanf("%d",&j);
    if(Delete(List,&num,j))
        Print(List,&num);
    getchar();
    return 0;
}
2010-12-04 16:34
C_snow
Rank: 1
等 级:新手上路
帖 子:34
专家分:3
注 册:2010-2-18
收藏
得分:0 
谢谢斑竹的回答  明白了!
2010-12-05 00:59
快速回复:【高手进来看下】一个小小的顺序表错误
数据加载中...
 
   



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

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