user-0 提问: C语言描述顺序表

回复:
user: user-1
content: #include <stdio.h> #include <stdlib.h> #include <time.h>  #define MAXSIZE 100  typedef int ElemType;  typedef struct {     ElemType data[MAXSIZE];     int length; }Sqlist;   void swap(ElemType &a, ElemType &b) {     ElemType c;     c = a;     a = b;     b = c; }  void divide(Sqlist *&L) {     int i = 0;     int j = L->length-1;     int temp = 0;      while(1)     {         for (; i < L->length; i++)             if (L->data[i] % 2 == 0)                 break;          for (; j > i; j--)             if (L->data[j] % 2 == 1)                 break;          if (i < j)             swap(L->data[i], L->data[j]);         else             break;          /*         if((L->data[i]%2)==0)         {             temp = L->data[i];         }         else         {             i++;         }         if((L->data[j]%2)==1)         {             L->data[i] = L->data[j];             L->data[j] = temp;         }         else         {             j--;         }         */     } }  void print_list(Sqlist *s) {     int i;      for(i=0; i< s->length; i++)         printf("%d ", s->data[i]);     putchar(10); }  int main() {     Sqlist *L, s;     int n, i;     printf("Input the number of list: ");     scanf("%d", &n);     if (n > MAXSIZE)         return 0;     L = &s;     srand(time(NULL));     for (i = 0; i < n; i++)         L->data[i] = rand() % 100;     L->length = n;      printf("Before swap: \n");     print_list(L);     divide(L);     printf("After swap: \n");     print_list(L);     return 0 ; }  参考一下吧  L->length不能直接通过sizeof获得，因为sizeof得到的是MAXSIZE，但是实际上没有那么多数据。所以，采用输入的形式； 分类函数也有点逻辑问题，上面的代码供参考；

user: user-2
content: 看起来你的基本概念都没掌握，回去重新好好看书吧。

user: user-0
content: 引用 2 楼 cfjtaishan 的回复:#include <stdio.h> #include <stdlib.h> #include <time.h>  #define MAXSIZE 100  typedef int ElemType;  typedef struct {     ElemType data[MAXSIZE];     int length; }Sqlist;   void swap(ElemType &a, ElemType &b) {     ElemType c;     c = a;     a = b;     b = c; }  void divide(Sqlist *&L) {     int i = 0;     int j = L->length-1;     int temp = 0;      while(1)     {         for (; i < L->length; i++)             if (L->data[i] % 2 == 0)                 break;          for (; j > i; j--)             if (L->data[j] % 2 == 1)                 break;          if (i < j)             swap(L->data[i], L->data[j]);         else             break;          /*         if((L->data[i]%2)==0)         {             temp = L->data[i];         }         else         {             i++;         }         if((L->data[j]%2)==1)         {             L->data[i] = L->data[j];             L->data[j] = temp;         }         else         {             j--;         }         */     } }  void print_list(Sqlist *s) {     int i;      for(i=0; i< s->length; i++)         printf("%d ", s->data[i]);     putchar(10); }  int main() {     Sqlist *L, s;     int n, i;     printf("Input the number of list: ");     scanf("%d", &n);     if (n > MAXSIZE)         return 0;     L = &s;     srand(time(NULL));     for (i = 0; i < n; i++)         L->data[i] = rand() % 100;     L->length = n;      printf("Before swap: \n");     print_list(L);     divide(L);     printf("After swap: \n");     print_list(L);     return 0 ; }  参考一下吧  L->length不能直接通过sizeof获得，因为sizeof得到的是MAXSIZE，但是实际上没有那么多数据。所以，采用输入的形式； 分类函数也有点逻辑问题，上面的代码供参考； 好的，谢谢