软件基础1011第四章第五章数据结构_第1页
软件基础1011第四章第五章数据结构_第2页
软件基础1011第四章第五章数据结构_第3页
软件基础1011第四章第五章数据结构_第4页
软件基础1011第四章第五章数据结构_第5页
已阅读5页,还剩20页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章C数据处理是编制计算机程序的主要工作,我们可以发现往往有些数据相互之间关系密数据对象很复杂,描述对象的信息有多重层次关系时,处理更为。结构的定义和单 { /*定义所有成员的数据类 shortcharmonth[3];shortyear;{/*成员定义开shortcharmonth[3];shortyear;};/*成员定义结 {{{shortshortshortcharcharcharshortshortshort}}}structd3。这种结构类型含有3个成员year,monthstruct shortdaycharmonth[3]shortstruct{

结构指针 shortshortyear;structdated1,d2[3],指针d3。struct{shortday;shortyear;}typedefstructdateDATEd2[3],

#defineDATEstruct{shortday;shortyear;}DATEd2[3],表示先将structdate定义DATE,然后DATE定义类型(可以同时定变量整型变量year的字节数之和。sizeof(structdate)=sizeof(day)+sizeof(month)+sizeof(year)=2+3+2=际需要的空间为8字节。shortshortbytebytebytebytebytebyteshortbytebytebytebyte short A{B

{AAA空间B空间A{shortA

结构指针结构指针例如:pe例如:pf

结构指针

结构变量例如:pgDATE例如:phDATE

结构指针 动态结构数※结构运算符包括“.”和“->”。 pd=&d;

结构指针

结构变量Apr⊙结构变量成员的符d.day=17

d.month[0]=d.month[1]=d.year=2000;

⊙结构指针对象成员的符“->”pd->day=17;pd->month[0]=pd->month[1]=pd->year=2000;DATEd1,d2,d2=*pd=d2.day=d1.day;d2.year=d1.year;

pd->day= pd->.year=d1.year;Annext,将多{ A若表尾的指针成员指向NULL,这样的链表称为单向链表。

构变量head

就 头,因链

结构变量

例如,定义结构变量:Ahead;例如,定义结构指针:A*first;

例如,定义结构变量:Alast;

结构变量

2例如,定义结构指针:A

结构指针tail A*first; first=NULL;待插入结点 用指针node指向非空链表 first非空 ⊙表中前插入操

插入点nn

①node->next= ①node->next=prev-①

n

②first= ②prev->next= 100定义首指针和尾指针 A*first,初始链表为空表 first=tail=待插入结点 用指针node指向first=tail=node;

first=tail=node; 指针tail看成是表中后插入的当前结点指针now。以指向首结点(循环链表),因此在后插入时统一用#next①node->next=now-②now->next=now /*now

n#

node

#n#

要和处理N个数据,可以根据数据量的情况,考虑采用数组或者链表以实现不同

AApa=×××函数函数函数函数函数函数return语句,可以将一个基本类型的数据或者一个地址值返回(传函数A获得intb,intintc=b=returnintintreturn据转换的隐式规则,先将实参转换成形参的数据类型,然后数据。mainabswap1ay也是变量。由swap1中的变量交换操作没有改变mainab的值。{shorta=5,①swap1(a,b);}

voidswap1(inta,int{int t= a= y=}

a=5,b=main: main: swap1: swap1: swap1:3 5 ? ? ?35???main:55swap1:

(数据)

main:33swap1:

main:55swap1:

(数据)

main:35swap1:3535 35

swap1: ?t=?

swap1:main:55?②

(数据)③a=y;swap1:

main:swap1:33

main:55?②

(数据)③a=y;swap1:

main:3333④t=

t=

y=maina和b是变量实参&a和&b是地址swap2ay是指针。由于调用语swap2(&a&b),mainabswap2ay,使swap2中对*a和*y的操作,mainab进行操作,从而改变了它们的数值。{

shorta=5,①swap2(&a,

n”,a,b); voidswap2(int*a,int{int t= *a= *y=}

a=3,b=55

main:???3 swap2:???35

33

5

33

sF2:*y

(地址swap2:

②t=

swap2:t

源文件inta,b;staticintc;{externint}intd;{}

源文件staticintb;{}intg;{externint}sub1(sub1(sub3(sub4(sub5({{{{}}}}if(n>n!=n•(n-if(a%b!=(a,b)=(b,if(n>{moveN(n-1,from,tmp,to);moveOne(n,from,to);moveN(n-1,tmp,to,from);}if(n==n!=if(a%b==(a,b)=if(n==moveOne(1,from,short(a,{shorta,{shorta,b,r;intr=(a,if(a%/*printf(“r=%d\n”,r=(b,a%/*}/*返回 }递归函数比较适用于用递归算法描述的问题(递归问题),但也可以用来解决非递归问题。而非递归函数不仅可以用来解决非递归问题,也可以用来解决递归问题。A B A B intstep=0;moveOne(intn,charfrom,char{printf("movechip(%d)",n);printf("from%c",from);printf("to%c\n",to);}{shortn;scanf("%d",&n);moveN(n,'A','B','C');

voidmoveN(n,from,to,tmp)intn;charfrom,to,tmp;{if(n==moveOne(1,from,{moveN(n-1,from,tmp,to);moveOne(n,from,to);moveN(n-1,tmp,to,from);}}}short(shorta,short{intif(a%r=(b,a%}{shorta,b,r;r=(a,b);printf(“r=%d\n”,r);}

short(shorta,short{intwhile(r=a%{a=b=}}{shorta,b,r;r=(a,b);printf(“r=%d\n”,r);} #include<stdio.h>#defineNstructN{intn;N*next;}*first;voidprt(N*head){Nprintf(“n=%d\n”,node->n);}

#include<stdio.h>#defineNstructnodeN{intn;N*next;}*first;voidprt(N*head){}

int

集合,则称B是数据结构。Kk1k2(K={k1k2,…,kn}。Rr1,r2,…R={r1,r2,…,rm|ri=(ks,kt),ks,kt∈K},表示在结点定义:B=(K,R),K={0,1,…,9},R={GT,LT},其中,GT1,0)(2021)LT0,1)(0,2)(12)kk k={k,k,k={ik|i=1,...,m}={1k,2k,…,若结点k的指针场pk有h个分量,每个指针场分量都对应于R的一个关系rj(j=1h),pk={pjk|j=1,...,h}={p1k,p2k,…,……结点k的单元 结点k的数据场 假定对应于一种关系rj的指针场pjk,需要指向t(j)个结点,即:pjk{pjkk|k=1t(jpj1k,pjt(j)k},则pk又可以进一步记为pk={p11k,…,p1t(1)k,p21k,…,p2t(2)k,…,ph1k,…,phk={k,1k,2k,…,mk,p11k,…,p1t(1)k,p21k,…,p2t(2)k,…,ph1k,…,phφ…φ……………rr

前 后 直接称k是k’的前件,k’是k的后件。

多个关系

k’K={1,2,3,4,5,6,7},R={N,T},N={(1,2),(1,4),(2,3),(3,7),(6,3),T2,64,55,26,7)}

结点12156374336 6T关系关系14475若对于任何一对结点(k,k’)都成立k’=k+s(s为单元的大小,固定长度),

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论