回 帖 发 新 帖 刷新版面

主题:[原创]请好心人帮个忙_--改错,谢谢!

已知一线性表按顺序存于内存,每个元素都是整数,试设计用最少的时间把所有值为负数的元素移到全部正数值的元素前
#include<stdio.h>
#include<stdlib.h>
#define LIST_INTSIZE 50
typedef int datatype;

typedef struct
{
    datatype *elem;
    int length;
    int listsize;
}seqlist;

int initseqlist(seqlist *l)
{
    int data[10];
    l->elem=(datatype*)malloc((LIST_INTSIZE)*sizeof(datatype));
    if(l->elem==NULL) return 0;
    l->length=0;
    l->listsize=LIST_INTSIZE;
    printf("success,the elems are:");
    scanf("%d",data);
    return 1;
}

void moveseqlist(seqlist *l)
{
    int temp;
    int i=0,j=l->length-1;
    while(i<j)
    {
        while(i<j&&getseqlist(&l,i)) i++;
        while(i<j&&getseqlist(&l,j)) j--;
        if(i<j)
        {
            temp=getseqlist(&l,i);
            getseqlist(&l,i)=getseqlist1(&l,j);
            getseqlist1(&l,j)=temp;
        }
    }
}
int getseqlist(seqlist *l,int i)
{


    if(i<0||i>l->length-1) return 0;
    else return(l->data[i]);
}

int getseqlist1(seqlist *l,int j)
{


    int data[10];
    if(j>0||j>l->length-1) return 0;
    else return(l->data[j]);
}

void main()
{
    seqlist l;
    moveseqlist(&l);
    printf("after moving,the elems are:");
}

回复列表 (共1个回复)

沙发

我看到第一个函数就搞不懂了~
[code]
int initseqlist(seqlist *l)
{
    int data[10];
    ...................................
    printf("success,the elems are:");
    scanf("%d",data);
    return 1;
}
[/code]如此,且不论那样scanf的参数data是错的,就算改成正确后,依次赋值给data数组,可又有什么用呢?让用户输入好玩是吧????

我来回复

您尚未登录,请登录后再回复。点此登录或注册