c语言问题试设计一个算法,将A[0..n-1]中所有奇数移到偶数之前。我写的代码。老是报错,求高手解答。

#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef int ElemType
#define OK 0
#define OVERFLOW 0

typedef struct {
ElemType * lem;
int listsize;
}SqList;
int InitList(SqlList &L)
{
L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem) exit(OVERFLOW);
L.listsize=LIST_INIT_SIZE;
for(int=0;i<L.listsize;i++)
{
L.elem[i]=i;
}
return OK;
}
int PaiXu(SqlList &L)
{
int i,k,j;
for(i=0;i<50;i++)
{
if(L.elem[i]%2==0)
{
for(k=100;k<51;k--)
{
if(L.elem[k]%2==1)
{
j=L.elem[i];
L.elem[i]=L.elem[j];
L.elem[j]=j;
}
}
}
}
return Ok;
}
void DisList(SqlList &L)
{
while(L.elem[i])
{
printf("%n",L.elem[i]);
i++;
}
}
void main()
{
SqlList L;
InitList(L);
PaixuXu(L);
DisList(L);
}

没调过,但大部分帮你改过来了,应该没大错误了,你稍微看看应该能搞定了!话说,你写的代码真的很难读,得注意。还有尽量不要传递引用,改用指针。and申请了内存用完要释放!!!
#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef int ElemType
#define OK 0
#define OVERFLOW 0

typedef struct
{
ElemType * elem;
int listsize;
}SqlList;

int InitList(SqlList &L)
{

L.listsize=LIST_INIT_SIZE;

for(int=0;i<L.listsize;i++)
{
L.elem[i]=i;
}
return OK;
}
int PaiXu(SqlList &L)
{
int i,k,temp;
for(i=0;i<L.listsize/2;i++)
{
if(L.elem[i]%2==0)
{ for(k=L.listsize-1;k>L.listsize/2-1;k--)
{
if(L.elem[k]%2==1)
{
temp=L.elem[i];
L.elem[i]=L.elem[k];
L.elem[k]=temp;
}
}
}
}
return Ok;
}

void DisList(SqlList &L)
{
int i=0;
while(L.elem[i])
{
printf("%n",L.elem[i]);
i++;
}
}

void main()
{
SqlList L;
L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.elem)
exit(OVERFLOW);
InitList(L);
PaiXu(L);
DisList(L);
if(L.elem!=NULL)
free(L.elem);

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-09-25
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define LIST_INIT_SIZE  100
#define LISTINCREMENT 10
#define OK 0
#define OVERFLOW -1

typedef int ElemType;
typedef struct node {
ElemType *elem;
int listsize;
}*SqList,Node;

SqList InitList() {
SqList head = (Node *)malloc(sizeof(Node));
head->elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if(!head->elem) exit(OVERFLOW);
head->listsize = LIST_INIT_SIZE;
for(int i = 0;i < head->listsize;i++) head->elem[i] = rand()%100 + 1;
return head;
}

void Handle(SqList head) {
int t,i = 0,j = head->listsize - 1;
while(i < j) {
while(head->elem[i]%2 == 1) ++i;
while(head->elem[j]%2 == 0) --j;
t = head->elem[i];
head->elem[i] = head->elem[j];
head->elem[j] = t;
}
}

void DisList(SqList head) {
int i;
for(i = 0; i < head->listsize; ++i) {
if(i && i % 10 == 0) printf("\n");
printf("%3d ",head->elem[i]);
}
printf("\n");
}

int main() {
SqList head = InitList();
srand(time(NULL));
printf("整理前:\n");
DisList(head);
Handle(head);
printf("\n整理后:\n");
DisList(head);
free(head->elem);
free(head);
return 0;
}

本回答被提问者采纳
第2个回答  2013-10-25
for(k=100;k<51;k--)这个条件没法成立啊 --> for(k=99;k>=51;k--)追问

还是不对啊,老是报这俩错。
1.cpp(9) : error C2143: syntax error : missing ';' before ''
1.cpp(9) : fatal error C1004: unexpected end of file found

相似回答