| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 293 人关注过本帖
标题:请看一下,帮我完善一下,谢谢了。
只看楼主 加入收藏
笔墨痕干
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2014-3-24
结帖率:84.21%
收藏
已结贴  问题点数:20 回复次数:2 
请看一下,帮我完善一下,谢谢了。
#include<stdio.h>
#define MaxSize 20//定义全局变量。
typedef struct//结构体的定义
{
    int count[MaxSize];
    int listlength;

}SeqList;
void InitList(SeqList *l)//有序列表的初始化。
{
    l->listlength=0;
}
void BaoCun(SeqList *l)//向有序列表中输入数据保存并显示。
{
   
    int i=0,j;
    printf("向有序列表中输入第一个数据\n");
    scanf("%d",&l->count[i]);
    printf("继续向有序列表中输入其它的数据,按0结束输入(最多能输入20个数据)\n");
    l->listlength++;
    while(l->count[i]!=0)
    {
        i++;
        scanf("%d",&l->count[i]);
        l->listlength++;
        if(l->listlength>MaxSize-1)
        {
            for(j=0;j<l->listlength;j++)
            printf("%d ",l->count[j]);
            printf("\n\n");
            printf("不能再输入数据\n");
            exit(0);
        }
    }
    l->listlength--;
   
    for(j=0;j<l->listlength;j++)
        printf("%d ",l->count[j]);
        printf("序列表中有%d个元素\n",j);
        printf("\n\n");
}
void InsList(SeqList *l,int n,int x)//在某个位置插入数据。
{
    int i;
    if(n<=l->listlength&&n>0)
    {
        for(i=l->listlength-1;i>=n-1;i--)
            l->count[i+1]=l->count[i];
        l->count[n-1]=x;
        (l->listlength)++;
    }
    else
    {
        printf("输入的数据太大,不能插入,请退出\n\n");
        exit(0);
    }
   
}
void print(SeqList *l)//输出序列表中的数据。
{
    int i;
    printf("输出的数据为:\n");
    for(i=0;i<l->listlength;i++)
        printf("%d ",l->count[i]);
    printf("\n\n");
}
int DelList(SeqList *l,int x)//删除序列表中的数据。
{
    int i,t,j;
    for(i=0;i<l->listlength;i++)
    {
        if(x==l->count[i])
        {
            t=1;
            break;
        }
        
    }
    if(t!=1)
    {
        printf("输入有误,请重新输入数据:\n\n");
        return 1;
    }
    else
    {
        for(j=i;j<l->listlength-1;j++)
            l->count[j]=l->count[j+1];
        (l->listlength)--;  
        for(i=0;i<l->listlength;i++)
            printf("%d ",l->count[i]);
        printf("\n\n");
        return 0;
    }

}
int Locate(SeqList *l,int x)//查询序列表中的数据的位置。
{
    int i,t;
    for(i=0;i<l->listlength;i++)
    {
        if(x==l->count[i])
        {
          t=1;
          break;
        }
    }
    if(t!=1)
    {
        printf("输入错误,请重新输入数据\n\n");
        return 1;
    }
    else
    {
        printf("你要查询的数据的位置为:%d",i+1);
        printf("\n\n");
        return 0;
    }

}
int ListLength(SeqList *l)//查询序列表的长度。
{
    int n;
    n=l->listlength;
    return n;
}
void main()
{
    int x,n,k=1,index;
    SeqList list;
    InitList(&list);
    BaoCun(&list);
    printf("请输入要插入的数据的位置及其数据.输入格式为(3,5)\n");
    scanf("%d,%d",&n,&x);
    InsList(&list,n,x);
    print(&list);
    while(k)
    {
      printf("请输入要删除的数据:\n\n");
      scanf("%d",&x);
      index=DelList(&list,x);
      if(index==0)
          k=0;
      else
          k=1;
    }
    k=1;
    while(k)
    {
      printf("请输入要查询数据:\n\n");
      scanf("%d",&x);
      index=Locate(&list,x);
      if(index==0)
          k=0;
      else
          k=1;
    }
    system("pause");
    printf("\n\n");
    k=1;
    index=ListLength(&list);
    printf("序列表的长度是:%d\n\n",index);
}
这个程序能正确的执行,但是我还有点不满意,那就是在输入0作为结束输入时把0保存进了结构体中的数组,但是我不想把他保存,请各位帮我看下把,给我帮忙改下,谢谢了!!!!!!!!!!!!!!!!
搜索更多相关主题的帖子: 结构体 include count 
2014-03-28 18:47
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:20 
一般函数的功能应该比较单一,如建立序列表,就不要同时输出。
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 20//定义全局变量。
typedef struct//结构体的定义
{
    int count[MaxSize];
    int listlength;

}SeqList;

void InitList(SeqList *l)//有序列表的初始化。
{
    l->listlength=0;
}

void BaoCun(SeqList *l)   //向有序列表中输入数据保存
{
   
    int i=0,x;
    printf("向有序列表中输入数据,按0结束输入(最多能输入20个数据)\n");
    scanf("%d",&x);   
   
    while(x!=0)
    {         
        l->count[i]=x;
        i++;
        scanf("%d",&x);
        l->listlength=i;
        if(i>=MaxSize-1)
        {         
            printf("不能再输入数据\n");
           return ;
        }
    }
}
void InsList(SeqList *l,int n,int x)//在某个位置插入数据。
{
    int i;
    if(n<=l->listlength&&n>0)
    {
        for(i=l->listlength-1;i>=n-1;i--)
            l->count[i+1]=l->count[i];
        l->count[n-1]=x;
        (l->listlength)++;
    }
    else
    {
        printf("输入的数据太大,不能插入,请退出\n\n");
        exit(0);
    }
   
}
void print(SeqList *l)//输出序列表中的数据。
{
    int i;
    printf("输出的数据为:\n");
    for(i=0;i<l->listlength;i++)
        printf("%d ",l->count[i]);
    printf("\n\n");
}
int DelList(SeqList *l,int x)//删除序列表中的数据。
{
    int i,t,j;
    for(i=0;i<l->listlength;i++)
    {
        if(x==l->count[i])
        {
            t=1;
            break;
        }
        
    }
    if(t!=1)
    {
        printf("输入有误,请重新输入数据:\n\n");
        return 1;
    }
    else
    {
        for(j=i;j<l->listlength-1;j++)
            l->count[j]=l->count[j+1];
        (l->listlength)--;  
        for(i=0;i<l->listlength;i++)
            printf("%d ",l->count[i]);
        printf("\n\n");
        return 0;
    }

}
int Locate(SeqList *l,int x)//查询序列表中的数据的位置。
{
    int i,t;
    for(i=0;i<l->listlength;i++)
    {
        if(x==l->count[i])
        {
          t=1;
          break;
        }
    }
    if(t!=1)
    {
        printf("输入错误,请重新输入数据\n\n");
        return 1;
    }
    else
    {
        printf("你要查询的数据的位置为:%d",i+1);
        printf("\n\n");
        return 0;
    }

}
int ListLength(SeqList *l)//查询序列表的长度。
{
    int n;
    n=l->listlength;
    return n;
}
void main()
{
    int x,n,k=1,index;
    SeqList list;
    InitList(&list);
    BaoCun(&list);
    print(&list);

    printf("请输入要插入的数据的位置及其数据.输入格式为(3,5)\n");
    scanf("%d,%d",&n,&x);
    InsList(&list,n,x);
    print(&list);
    while(k)
    {
      printf("请输入要删除的数据:\n\n");
      scanf("%d",&x);
      index=DelList(&list,x);
      if(index==0)
          k=0;
      else
          k=1;
    }
    k=1;
    while(k)
    {
      printf("请输入要查询数据:\n\n");
      scanf("%d",&x);
      index=Locate(&list,x);
      if(index==0)
          k=0;
      else
          k=1;
    }
    system("pause");
    printf("\n\n");
    k=1;
    index=ListLength(&list);
    printf("序列表的长度是:%d\n\n",index);
}


[ 本帖最后由 ying8501 于 2014-3-28 20:11 编辑 ]
2014-03-28 20:04
笔墨痕干
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2014-3-24
收藏
得分:0 
回复 2楼 ying8501
对啊,采用中间变量赋值就可以了,谢谢你的帮助,和你的建议
2014-03-29 15:35
快速回复:请看一下,帮我完善一下,谢谢了。
数据加载中...
 
   



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

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