没调过,但大部分帮你改过来了,应该没大错误了,你稍微看看应该能搞定了!话说,你写的代码真的很难读,得注意。还有尽量不要传递引用,改用指针。and申请了内存用完要释放!!!
#include
#include
#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.elem[i]=i;
}
return OK;
}
int PaiXu(SqlList &L)
{
int i,k,temp;
for(i=0;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);
}
#include
#include
#include
#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;
}
for(k=100;k<51;k--)这个条件没法成立啊 --> for(k=99;k>=51;k--)