⽤c语⾔定义ADT抽象数据类型,抽象数据类型定义(ADT)类C语⾔语法⽰例
1、预定义常量和类型
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
c语言listinsert函数#define OVERFLOW -2
typedef in Status; //Status是函数的类型,其值是函数结果状态代码。
2、数据结构的存储结构
typedef ElemType first;
3、基本操作的算法
函数类型 函数名(函数参数表){
//算法说明
语句序列
}//函数名
4、赋值语句
简单赋值:
变量名=表达式;
串联赋值:
变量名1=变量名2=...=变量名k=表达式;
成组赋值:
(变量名1,...,变量名k)=(表达式1,...,表达式k);
结构名=结构名;
结构名=(值1,...,值k);
变量名[]=表达式;
变量名[起始下标..终⽌下标]=变量名[起始下标..终⽌下标];
交换赋值:
变量名变量名;
条件赋值:
变量名=条件表达式?表达式?表达式T:表达式F
5、选择语句
2、if(表达式) 语句;
else 语句;
3、switch(表达式){
case 值1:语句序列1;break;
...
case 值n:语句序列n;break;
default:语句序列n+1;break;
}
4、switch{
case 条件1:语句序列1;break;
...
case 条件n:语句序列n;break;
default:语句序列n+1;break;
}
6、循环语句
for(赋初值表达式;条件;修改表达式序列)语句;while(条件)语句;
do{ 语句序列}while(条件);
7、结束语句
return [表达式];
return; //函数结束语句
break; //case结束语句
exit(异常代码); //异常结束语句
8、输⼊和输出语句
scanf([格式串],变量1,...,变量n);
9、注释
//⽂字序列
10、基本函数
max(表达式1,...,表达式n)
min,abs,floor,ceil,eof,eoln
11、逻辑运算
&&与运算;||或运算
例:线性表的实现:
数据对象: D={ai| ai(-ElemSet,i=1,2,...,n,n>=0}
基本操作:
InitList(&L)
DestroyList(&L)
ListInsert(&L,i,e)
ListDelete(&L,i,&e)
}ADT List
ListInsert(List &L,int i,ElemType e)
{if(i<1||i>L.length+) return ERROR;
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p) *(p+1)=*p;
*q=e;
++L.length;
return OK;
}
#define ERROR
#define OK 1
struct STU
{ char name[20];
char stuno[10];
int age; int score;
}stu[50];
struct LIST
{ struct STU stu[50];
int length;
}L; int printlist(struct LIST
L)
{ int i;
printf("name stuno age score/n");
for(i=0;i
printf("%s %s/t%d/t%d/n", L.stu[i].name, L.stu[i].stuno, L.stu[i].age, L.stu[i].score);
}
int listinsert(struct LIST *L,int i,struct STU e) { struct STU *p,*q;
if (i<1||i>L->length+1)
return ERROR;
q=&(L->stu[i-1]);
for(p=&L->stu[L->length-1];p>=q;--p)
*(p+1)=*p; *q=e; ++L->length;
return OK;
}
main()
{ struct STU e;
L.length=0;
strcpy(e.name,"zmofun");
strcpy(e.stuno,"100001");
e.age=80;
e.score=1000;
listinsert(&L,1,e);
printlist(L);
printf("List length now is %d./n/n",L.length); strcpy(e.name,"bobjin");
strcpy(e.stuno,"100002");
e.age=80;
e.score=1000;
listinsert(&L,1,e);
printlist(L);
printf("List length now is %d./n/n",L.length); }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。