线性表adt的c语言表达,抽象数据类型定义(ADT)
類(lèi)C語(yǔ)言語(yǔ)法示例
1、預(yù)定義常量和類(lèi)型
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef in Status; //Status是函數(shù)的類(lèi)型,其值是函數(shù)結(jié)果狀態(tài)代碼。
2、數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)結(jié)構(gòu)
typedef ElemType first;
3、基本操作的算法
函數(shù)類(lèi)型 函數(shù)名(函數(shù)參數(shù)表){
//算法說(shuō)明
語(yǔ)句序列
}//函數(shù)名
4、賦值語(yǔ)句
簡(jiǎn)單賦值:
變量名=表達(dá)式;
串聯(lián)賦值:
變量名1=變量名2=...=變量名k=表達(dá)式;
成組賦值:
(變量名1,...,變量名k)=(表達(dá)式1,...,表達(dá)式k);
結(jié)構(gòu)名=結(jié)構(gòu)名;
結(jié)構(gòu)名=(值1,...,值k);
變量名[]=表達(dá)式;
變量名[起始下標(biāo)..終止下標(biāo)]=變量名[起始下標(biāo)..終止下標(biāo)];
交換賦值:
變量名變量名;
條件賦值:
變量名=條件表達(dá)式?表達(dá)式?表達(dá)式T:表達(dá)式F
5、選擇語(yǔ)句
1、if(表達(dá)式) 語(yǔ)句;
2、if(表達(dá)式) 語(yǔ)句;
else 語(yǔ)句;
3、switch(表達(dá)式){
case 值1:語(yǔ)句序列1;break;
...
case 值n:語(yǔ)句序列n;break;
default:語(yǔ)句序列n+1;break;
}
4、switch{
case 條件1:語(yǔ)句序列1;break;
...
case 條件n:語(yǔ)句序列n;break;
default:語(yǔ)句序列n+1;break;
}
6、循環(huán)語(yǔ)句
for(賦初值表達(dá)式;條件;修改表達(dá)式序列)語(yǔ)句;
while(條件)語(yǔ)句;
do{ 語(yǔ)句序列}while(條件);
7、結(jié)束語(yǔ)句
return [表達(dá)式];
return; //函數(shù)結(jié)束語(yǔ)句
break; //case結(jié)束語(yǔ)句
exit(異常代碼); //異常結(jié)束語(yǔ)句
8、輸入和輸出語(yǔ)句
scanf([格式串],變量1,...,變量n);
9、注釋
//文字序列
10、基本函數(shù)
max(表達(dá)式1,...,表達(dá)式n)
min,abs,floor,ceil,eof,eoln
11、邏輯運(yùn)算
&&與運(yùn)算;||或運(yùn)算
例:線性表的實(shí)現(xiàn):
ADT List{
數(shù)據(jù)對(duì)象: 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
0
#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);
printf("/n");
}
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);
}
總結(jié)
以上是生活随笔為你收集整理的线性表adt的c语言表达,抽象数据类型定义(ADT)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言二级试题讲解,C语言试题,二级C语
- 下一篇: 算法和数据结构c语言源代码,【资料分享】