帮忙看看一个算法设计题,用C语言实现

2025-04-09 00:44:54
推荐回答(1个)
回答1:

//排序思想是一轮 快速排序
#include
#include
typedef struct aa
{
  int date[100];
  int top;
}aa,*pa;
pa creat()
{
pa a=(aa *)malloc(sizeof(aa));
 if(a)
   a->top=0;
}
void show(pa a)
{
  int i;
  printf("\n线性表的元素是\n");
  for(i=0;itop;i++)
    {
      printf("%-3d",a->date[i]);
      if((i+1)%10==0)
    printf("\n");
    }
}
void input(pa a,int n)
{
  if(a->top>=99)
    printf("元素个数已满\n");
  else
    {
      a->date[a->top]=n;
      a->top++;
    }
}
void change(pa a)
{
  int i,key=a->date[0],low=0,hight=a->top-1;
  while(low    {
      while(key>a->date[low]&&low<=hight)
    low++;
      while(keydate[hight] &&hight>=low)
    hight--;
      i=a->date[low];
      a->date[low]=a->date[hight];
      a->date[hight]=i;

    }
  a->date[low]=key;
}
int main()
{
  int i,j,k,n;
  pa a=creat();
  printf("请输入元素的个数\n");
  scanf("%d",&n);
  printf("请输入这些互不相等的元素\n");
  for(i=0;i    {
      scanf("%d",&k);
      input(a,k);
    }
  show(a);
  change(a);
  show(a);
  free(a);
  return 0;
}