主题:[原创]请好心人帮个忙_--改错,谢谢!
已知一线性表按顺序存于内存,每个元素都是整数,试设计用最少的时间把所有值为负数的元素移到全部正数值的元素前
#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:");
}
#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:");
}