| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 285 人关注过本帖
标题:请各位大侠帮忙看看,这个哪里有问题
取消只看楼主 加入收藏
初学者liuxin
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2010-10-18
收藏
 问题点数:0 回复次数:0 
请各位大侠帮忙看看,这个哪里有问题
要求如下
1)首先创建一个顺序表:从键盘读入一组整数(长度小于等于20),按输入顺序放入顺序表,输入以-1结束(注意-1不放到顺序表内);将创建好的顺序表元素依次输出到屏幕上。

2)在已创建好的顺序表中插入一个元素:从键盘读入需插入的元素值和插入位置,调用插入函数完成插入操作;然后将顺序表元素依次输出到屏幕上。

3)在已创建好的顺序表中删除一个元素:从键盘读入欲删除的元素位置(序号),调用删除函数完成删除操作;然后将顺序表元素依次输出到屏幕上。

问题:第一个要求能正确输出,后面两个都有不能正确输出

#include<stdio.h>
#include<stdlib.h>
#define MAXNUM 20
#define true 1
#define false 0
typedef struct
{   
    int data[MAXNUM];
    int length;
}list_type;

void createlist(list_type *p)
{
    int i,elem;
    p->length=0;
    printf("\nplease input datas of the list\n");
    for(i=0;i<MAXNUM;i++)
    {
        scanf("%d",&elem);
        if(elem==-1)break;
        p->data[i]=elem;
        p->length++;
    }
}
void showlist(list_type *p)
{
        int i;
        printf("\nthese %d records are:\n",p->length);
        if(p->length<=0)
    {
        printf("No data!\n");
        return;
    }
   
        for(i=0;i<p->length;i++)
        printf("%d ",p->data[i]);
        printf("\nlength of the list is:%d",p->length);
}
int insertlist(list_type *lp,int new_elem,int i)
{
    int j;
    if(lp->length>=MAXNUM)
    {
        printf("the list is full,can not insert");
        return(false);
    }
    if(i<1||i>lp->length+1)
    {
        printf("\n%d is invalid value",i);
        return(false);
    }
    else
    for(j=lp->length-1;j>=i-1;j--)
        lp->data[j+1]=lp->data[j];
        lp->data[i-1]=new_elem;
        lp->length++;
        return(true);
}
int deletelist(list_type *lp,int i)
{
    int j;
    if(i<1||i>lp->length)
    {
        printf("elem not exist");
        return(false);
    }
    else
    for(j=i;j<lp->length;j++)
        lp->data[j-1]=lp->data[j];
        lp->length--;
        return(true);
}
int delete_negative(list_type *lp,int )
{
    int i,j;
    for(i=0;i<lp->length;i++)
        if(lp->data[i]>=0)
        {
            printf("negative is not exist");
            return(false);
        }
        else
        for(i=0;i<lp->length;i++)
            if(lp->data[i]<0)
            {   
                for(j=i;j<lp->length;j++)
                lp->data[j]=lp->data[j+1];
                lp->length--;
            }
            return(true);
}
void main ()
{
     list_type list;
     int i,data;
     createlist(&list);
     showlist(&list);
     printf("\ninsert:Enter i and data:\n");
     scanf("%d,%d",&i,&data);
     insertlist(&list,data,i);
     printf("\nlist after insert:\n");
     showlist(&list);
     printf("\ndelete:Enter i:\n");
     scanf("%d",&i);
     deletelist(&list,i);
     printf("\nlist after delete:\n");
     showlist(&list);
     delete_negative(&list,i);
     printf("\nlist after delete all negative:\n");
     showlist(&list);
}
搜索更多相关主题的帖子: 键盘 元素 
2010-11-23 09:21
快速回复:请各位大侠帮忙看看,这个哪里有问题
数据加载中...
 
   



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

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