⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 10.32.c

📁 部分高校使用anyview编程测试数据结构习题,此代码为数据结构题集(c语言版)严蔚敏版的课后习题答案.专门提供给在anyview上运行,全部为通告代码
💻 C
字号:
10.32⑤ 荷兰国旗问题:设有一个仅由红、白、兰
这三种颜色的条块组成的条块序列。请编写一个时
间复杂度为O(n)的算法,使得这些条块按红、白、
兰的顺序排好,即排成荷兰国旗图案。

实现下列函数:
void HFlag(FlagList &f)
/* "荷兰国旗"的元素为red,white和blue,*/
/* 分别用字符'0','1'和'2'表示          */

"荷兰国旗"的顺序表的类型FlagList定义如下:
#define red   '0'
#define white '1'
#define blue  '2'

typedef char ColorType;

typedef struct { 
  ColorType r[MAX_LENGTH+1];
  int       length; 
} FlagList;
void HFlag(FlagList &f)
{
 int r=0,w=0,b=0,i,j;
 for(i=1;i<=f.length;i++)
   {if(f.r[i]==red) r++;
     else if(f.r[i]==white) w++;
     else b++;
     }
 for(i=1,j=1;j<=r;j++,i++) f.r[i]=red;
 for(j=1;j<=w;j++,i++) f.r[i]=white;
 for(j=1;j<=b;j++,i++) f.r[i]=blue;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -