计算机软件技术基础线性表及其顺序存储结构_第1页
计算机软件技术基础线性表及其顺序存储结构_第2页
计算机软件技术基础线性表及其顺序存储结构_第3页
计算机软件技术基础线性表及其顺序存储结构_第4页
计算机软件技术基础线性表及其顺序存储结构_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

计算机软件技术基础2.2线性表及其顺序存储结构2.2.1线性表及其运算2.2.2栈及其应用2.2.3队列及其应用2.2.1线性表及其运算1.什么是线性表(LinearList)线性表是最简单最常用的一种数据结构。线性表是由一组数据元素构成。例如:n维向量(x1,x2,…,xn)是一个长度为n的线性表,其中的每一个分量就是一个数据元素。英文小写字母表(a,b,c,…,z)是一个长度为26的线性表一年中的四个季节(春,夏,秋,冬)是一个长度为4的线性表矩阵是一个比较复杂的线性表学生情况登记表是一个复杂的线性表,由若干数据项组成的数据元素称为记录(record)由多个记录构成的线性表又称为文件(file)

线性表是由n(n≥0)个数据元素a1,a2,…,an组成的一个有限序列,表中的每一个数据元素,除了第一个外,有且只有一个前件,除了最后一个外,有且只有一个后件。即线性表或是一个空表,或可以表示为(a1,a2,…,ai,…,an)其中ai(i=1,2,…,n)是属于数据对象的元素,通常也称其为线性表中的一个结点。线性表的逻辑结构非空线性表结构特征:(1)有且只有一个根结点a1,它无前件;(2)有且只有一个终端结点an,它无后件;(3)除根结点与终端结点外,其它所有结点有且只有一个前件,也有且只有一个后件。线性表中结点的个数n称为线性表的长度。当n=0时,称为空表。2.线性表的顺序存储结构线性表的顺序存储结构基本特点:(1)线性表中所有元素所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。线性表中第i个元素ai在计算机存储空间中的存储地址为ADR(ai)=ADR(a1)+(i-1)k长度为n的线性表(a1,a2,…,ai,…,an)顺序存储结构整型一维数组存放长度为8的线性表(29,18,56,63,35,24,31,47)建立空线性表的顺序存储空间(即初始化线性表的顺序存储空间)

#include"stdlib.h"voidinitsl(v,m,n)ET*v;intm,*n;{v=malloc(m*sizeof(ET));*n=0;return;}释放线性表的顺序存储空间

free(v);

线性表顺序存储结构下的主要运算:(1)在线性表的指定位置处加入一个新的元素(即线性表的插入);(2)在线性表中删除指定的元素(即线性表的删除);(3)在线性表中查找某个(或某些)特定的元素(即线性表的查找);(4)对线性表中的元素进行整序(即线性表的排序);(5)按要求将一个线性表分解成多个线性表(即线性表的分解);(6)按要求将多个线性表合并成一个线性表(即线性表的合并);(7)复制一个线性表(即线性表的复制);(8)逆转一个线性表(即线性表的逆转)等。3.线性表在顺序存储下的插入运算一般来说,设长度为n的线性表为:(a1,a2,…,ai,…,an)在线性表的第i个元素ai之前插入一个新元素b,插入后得到长度为n+1的线性表为:(a’1,a’2,…,a’j,a’j+1,…a’n,a’n+1)则插入前后的两线性表中的元素满足如下关系:a’j=ajbaj-11≤j≤i-1j=ii+1≤j≤n+1线性表在顺序存储下的插入运算473124356356线性表在顺序存储下的插入运算473124356356182987V(1:10)14V(1:10)插入元素87后变为长度为9的线性表473124356356188729V(1:10)再插入元素14后变为长度为10的线性表47143124356356188729

12345678910

471814长度为8的线性表87线性表在顺序存储下的插入算法输入:线性表的存储空间V(1:m);线性表的长度n(n≤m);插入的位置i(i表示在第i个元素之前插入);插入的新元素b。输出:插入后的线性表存储空间V(1:m)及线性表的长度n。

PR友OC稀ED白UR世E趣I窑NS破L(起V,m,n,i,b)IF墨(n=m)掩TH瞧EN养{训OV爷ER胶FL轮OW;RE伙TU景RN胀}IF扬(i>n)佳TH围EN马i=n+1IF槽(i<1)界TH名EN仙i=1FO似R梁j=n腥T吨O疑i策BY-1添D猫OV(裙j+1)=V(据j)V(川i)=bn=n+1RE跪TU亲RNvo教idin烛sl馆(v,m,n,i,b)ET材v[残],b;in户tm,*n,i;{锋if截(*勇n==m){pr垮in姿tf姻("洋ov印er矮fl萌ow\n饱");re盗tu梅rn;}if切(i>*n-1)贯i=*n+1;if苏(i<1)说i=1;fo练r宣(j=*n;j<=i;j―局―)佣v[欲j]=v[表j-1];v[渴i-1]=b;*n=畜*n+1;re活tu揪rn;}4.线性董表在谱顺序谈存储侄下的爷删除蔬运算472.桂1.颂4挑线生性表昏在顺烟序存唱储下翁的删调除运发算一般松情况送下,女如果气要删乏除第i(风1≤i粘≤源n)元素伶,则姑需从估第i+叹1个元裙素开姥始,技直到暑第n个元齿素(滩共n-需i个元颠素)证依次向前春移动拐一个扣位置。删则除结很束后酒,线性踪蝶表的魔长度篮减少陷了14731243563561829V(1:10)10987654321长度为8的线性表要求删除294747312435635618V(1:10)10987654321删除元素29后再删除314747472435635618V(洪1:松10汉)10987654321又删浴除元笛素31后47312435635629V(干1:捆10箱)18V(饺1:灯10橡)1098765432147312435635618演示椒区线性结表在基顺序让存储些下的禾删除消算法输入钱:线或性表祥的存踩储空获间V(绢1:m);线性变表的胆长度n(n≤问m);删除她的位阶置i(表示忽删除点第i个元珍素)梁。输出钥:删魂除后吉的线港性表卧存储生空间V(须1:m)及线爆性表胁的长胡度n。PR锁OC捐ED筛UR支E怒D絮ES榨L(颗V,m,n,i)1.碰I蔽F沾(虎n=0)惜TH雕EN贱{乎UN练DE言RF币LO听W;RE恰TU峡RN斑}2.麻I挎F叉(i<1)店or昨(i>n)酸T单HE闯N{“趣No貌t慕th边is及e升le迟me拾nt京i惊n呜th渐e单li耳st惨”;RE倡TU蝴RN厦}3.役F胆OR匙j=i救T消O勾n-1雪DOV(棕j)=V(伙j+1)4.野n=n-15.遣R沃ET皂UR栋Nvo忆idde茎sl惜(v,m,n,i)ET羊v[看];in断tm,*n,i;{咳if番(工*n==0){pr梢in搏tf粪("漫un闪de仰rf叙lo蒸w\n内");re指tu闯rn;}if耗((顾i<1)透|架|仅(带i>*n)斩){pr欠in挤tf世("格No闷tth隐is宏e危le芳me趴nt开i抚n捕th椒e咏li俱st茶\机n"刷);re沈tu熄rn;}fo课r绒(惠j=i;j<=项*n-1;j++)奖v亭[j-1]=v[勇j];*n=*n-1;re伐tu截rn;}1)优森点顺序庄表的六结构口简单顺序再表的用存储振效率荣高,塑是紧漏凑结道构顺序宫表是诵一个样随机郊存储旺结构膏(直午接存萝取结戒构)2)缺馋点在顺真序表剑中进众行插腰入和翅删除您操作竞时,轮需要旺移动恼数据竞元素宣,算哥法效侍率较托低。对长棋度变粘化较纺大的康线性报表,灯或者型要预挠先分活配较许大空劫间或池者要另经常联扩充绩线性还表,朱给操稼作带夫来不砖方便扛。原因嚷:数催组的啄静态稻特性描造成1.什么付是栈栈(st沾ac按k)是笑一种贯特殊误的线除性表僚。对鞠它的昌操作羡只能还是“睛后进朗先出许”(LI罪FO),名也是康使用绘最为斩广泛锅的数黄据结亦构之肾一。泄因为高它的话运算山次序数受到滔严格哑的规蚁定,溜故又盈称为烂限定颜性数蛋据结唇构。为了劫认识殊栈这桐种数费据结芳构,侧首先蛾介绍属一个储例子垒。2.蕉2.那2栈及淋其应匙用先进令后出(Fi零rs购tI县nL目as黎tO竟ut)的线主性表栈底栈顶进栈出栈a1a4a2a3NU租LL堆栈a5主程宵序与卖子程水序之杀间的斥调用贺关系MA雷IN厨SU获B1膝SU肝B2挠SU嗓B3茶SU尼B4……六……冻……肃……估……CA害LL吸SU量B1巾C销AL救LS烈UB茫2垫C乖AL合LS煎UB流3驼C秤AL猫LS定UB馋4色…基…A:……链B:……盲C:……维D:……乌…态………屈…概…茂…爱…多…悼…遭……EN峰D睛R供ET恨UR卵NRE裹TU孩RNRE典TU丘RNRE多TU象RN由这宵个例摧子可咸以看麻出,局在这疤种特暮殊的欲线性后表中皇,其永插入默与删桑除运扮算都卸只能盗在线臣性表刺的一歇段进债行。兰即在哑这种躺线性至表的恨结构刺中,袖一端尚是封逝闭的泡,不客允许旬插入刑和删童除元韵素;程另一补端是本开口碧的,共允许狼插入妈与删亿除元芦素。伪在顺圾序存抖储结雹构下袭,对队这种奥类型级线性淘表的旁插入描与删兴除运撞算是者不需迅要移靠动表摸中其统它数则据元敢素的踢。这歉种线塘性表称为栈擦。栈(s热ta启ck疯)是限忘定在康一端雨进行乌插入只与删匪除的苗线性翁表。栈顶:允许球插入粗与删唤除的脑一端.栈底:不允蒜许插置入与屠删除周的另弄一端法。栈是谨按照亡“先进硬后出狮”(F便IL袄O—若Fi参rs疫t泼In滴L办as灵t顶Ou修t)或“后进啦先出”(L彼IF违O—挣La连st展I针n贤Fi纪rs役t勺Ou旁t)的原擦则组乞织数脱据的搭,因屠此,仗栈也粗被称叙为“捆先进鹅后出率”表扁或“缎后进跨先出地”表带。栈具演有记忆作用爬。用宪指针to嫁p来指箩示栈境顶的药位置罩,用搅指针bo晓tt权om指向希栈底任。往栈解中插蹄入一袋个元贿素称络为入栈运算讲,从秘栈中透删除茂一个滩元素(即删纷除栈新顶元预素)称为退栈运算。关于衡栈的璃几个努基本克概念2.栈的壳顺序索存储助及其或运算Y2.糠2语栈险及其摧应用2.画2.主2喇栈宵的顺遇序存诱储及堡其运漏算ABCDEF10987654321ABCDEF10987654321ABCDEFY10987654321bo贴tt豆omto诉pto提pto侮pbo狸tt姜ombo绘tt禁omS(拌1:盯10众)有6个元存素的吐栈插入Y后的披栈退出Y元素糖的栈演示区1演示区2to星p=0表示半栈空袖;to责p=m表示清栈满练。建立男空栈亲的顺屑序存毙储空微间(即虾初始灿化栈遗的顺蓄序存鼠储空族间)#i种nc归lu谈de它"st定dl绸ib道.h"vo签id纯in道it凝_s短ta润ck景(s,m,to饭p)ET释*s;in饲tm,励*to挪p;{五s=ma盼ll抬oc哑(m*si生ze赖of泳(E唇T));*to往p=0;re橡tu拾rn;}释放拣栈的性顺序齐存储神空间倒时fr纽奉ee浇(s颠);(1配)入栈感运算PR犁OC芒ED测UR勇E宰P蓬US悦H(晚S,m,to昏p,x)1.坟I演F摸(混to赤p=m)裂TH县EN志{象St宋ac无k-OV混ER猜FL爬OW;RE枯TU寻RN戒}2.芝t肿op=to信p+13.良S胁(t蚂op劫)=x4.弓R缠ET渡UR倒Nvo里idpu雅sh和(s,m,to到p,x)ET予s[幸],x;in甘tm,*to川p;{务if窗(供*t耽op==m)傍{pr杀in苹tf召("疑St昂ac拣k-ov米er原fl肥ow隶\n盖");re嘱tu屿rn;}*t烘op=*to内p+1;s[蜂*t才op-1]=x;re柱tu拍rn;}(2碎)退栈窄运算PR火OC咬ED廊UR跟E堂P症OP妹(S,m,to明p,y)1.柿I立F赢(牙to封p=0)法TH惯EN届{卷St粪ac夫k-UN案DE钓RF双LO屿W;RE党TU副RN层}2.易y=S(厦to浩p)3.身t再op=to适p-14.宫R醒ET糊UR花Nvo坟idpo储p(押s,m,to据p,y)ET稳s[脸],*y;in围tm,*to必p;{回if冒(沈*t切op==0)营{pr饱in盆tf强("释St伍ac车k-un百de暮rf类lo箩w\蛇n"役);re简tu录rn;}*y=s[妇*t车op-1];何*to伍p=*to法p-1;re扣tu立rn;}PR否OC化ED妖UR舟E谦T候OP职(S,m,to虑p,y)1.胸I袭F与(挽to米p=0)作TH誓EN胡{前“S猪ta虑ck冈e饿mp捕ty赶”;RE著TU面RN惩}2.毒y=S(狱to纽奉p)3.喇R蚂ET古UR麻N(3行)读栈端顶元夺素vo惹idto贫p(串s,m,to洗p,y)ET雾s[浙],*y;in司tm,*to贱p;{课i输f椒(*蜡to落p==0)员{pr抚in贱tf载("泄St坟ac信kem市pt道y哨\n自");re胸tu厕rn;}*y=s[校*t债op-1];re油tu题rn;}3.表达每式的秤计算运算钟符栈(OP垃S),用加于在链表达捎式处财理过赚程中叫存放粒运算它符。在开功始时征,运孤算符优栈中王先压燃入一沈个表抚达式蝇结束潮符“检;”氧。操作魔数栈(OV馆S),用可于在花表达沟式处毕理过蔽程中绕存放垮操作勿数。从左蛇到右估依次功读出糟表达邮式中您的各陡个符商号:若是族操作支数,肠则压幸入操云作数洲栈,叉依次枝读下压一个元符号炼。若是签运算绝符,虽则作胖进一梦步判辛断:①若谦读出绢运算担符的塘优先站级大贤于运伞算符陡栈栈炕顶运抹算符垮的优堵先级兽,则坛将读毫出的形运算块符压授入运浆算符携栈,挡并依支次读异下一贡个符身号。②若杰读出娇的是郊表达帅式结洗束符均“;桃”,营且运剃算符迷栈栈枣顶的犬运算汇符也蝇是表携达式尊结束馅符“序;”匀,则计表达化式处耍理结县束,跑最后粉的计谷算结晓果在膀操作碎数栈循的栈槐顶位缠置。③若扫读出骂运算蚀符的伟优先抄级不兆大于谦运算趁符栈不栈顶楚运算获符的仿优先拉级,虹则从车操作颠数栈连续敏退出鸟两个艰操作校数,并槽从运袋算符争栈退出瓣一个屡运算震符,然等后作晃相应借的运挪算(笼运算再符为枯刚从计运算尤符栈足退出貌的运拢算符考,运做算对嫌象为诸刚从非操作秋数栈巾退出苍的两血个操吼作数砖),辱并将酒运算病结果图压入深操作凳数栈贴。例:杯表达肢式A+养B*圾C-赌D/浸E的计财算过蛾程OP陡SOV议S/-DECB*+A;TOPvTOPp+*>?运算元符比臂较:()表达特式:真-*假计算忧:T2销=欺A扎+学T朴1T1/T2T1婆=扩B扑*株C;;-T3治=葛D据/件ET3/T4益=洒T代2粗–剥T3T4;=结果专:T4开始夕:构狸造堆根栈读符铲号进北栈:A、+、B读符愁号:回*读符坦号:C读符睛号:-再判框符号痛:-读符服号:D、/读符封号:E、;再判丙符号才:;再次杨判别亦符号赶:;栈及除其应甜用-辉波兰累表达刑式表达则式A-步B(A谈-B阔)*鞋C+符DA*誉(B湾+C递/D肚)-乎E*牧F(B哗+C趣)/孤(A暂-D循)运算剂符总脖是位赢于运承算对躲象的芽中间运算咳符位恭于运龟算对廉象的纹后面波兰跨表示努式AB告-AB码-C损*D河+AB牙CD夏/+裂*E姨F*甘-BC路+A最D-柿/对波肾兰表债达式件的运毙算过奇程,管总是棍从左略向右衫进行鹊的。徐对于露一般怎的表场达式嘉,既哗可以讨利用栈来直躲接计悦算它捎的值蜓,也撑可以纱利用崇栈将算它变宰换成雨波兰行表达地式。2.坝2.敬3队列妨及其沸应用1.什么神是队销列队列(eq培ue赠ue)是指颂允许安在一策端进仔行插洞入、庭而在忍另一摆端进咽行删洁除的寺线性霸表。数据贷结构停中的烤队列捧与生仙活中驻的“已排队娘”极普为相竿似,击也是奴按“乎先来鄙先解宽决”陷的原晌则行勇事的绸,并汪且既败不允命许“锹加塞耕”,缩慧也不概允许摇“中旺途离熄队”。关于做队列士的几宅个基馅本概斗念允许泽插入茂的一吩端称饱为队尾,用秋尾指施针(re亡ar)指向斧队尾惊元素猜。允许独删除扶的一背端称路为排头(也称队头),用秀排头悟指针(fr页on已t)指向晋排头出元素侦的前邻一个孟位置个。队列么又称贸为“先进问先出”(FI蛾FO尤—F绩ir柏st讲I盏n付Fi皂rs振tOu店t)或“后进关后出”(LI菠LO却—L宽as见t海In到L唇as见t旷Ou肯t)的线渔性表厚,体音现了晌“先米来先蚊服务督”的恨原则剃。往队彻列的常队尾考插入薪一个瓦元素短称为入队西运算,从挑队列雄的排豪头删揪除一缓个元熟素称衣为退队社运算。2.循环区队列关及其魔运算队列如空的拍条件识为s=0队列铸满的桃条件述为(s=1)且fr需on弦t=re暑ar建立混循环术队列充顺序依存储熟空间(即某初始老化循拖环队孔列顺芳序存作储空衡间)#i冻nc厉lu茫de毁"st降dl丸ib飘.h"vo耀id爪in蹈it斯_q版ue界ue贵(q,m,fr津on采t,re膏ar,s)ET锋*q;in逮tm,画*fr染on盯t,垦*re魄ar,聚*s;{轰q=ma驰ll没oc速(m*si毁ze沉of栽(E迟T));*fr们on代t=m;*re括ar=m;*s=0;re糊tu坦rn;}释放覆循环倘队列啦的顺放序存厘储空猾间fr闸ee倡(q尼);(1攻)入队中运算PR与OC暖ED没UR剧E晴A喷DD隆CQ关(Q,m,re殿ar,fr称on蚂t,s,x)1.窜I绍F藏(阁s=1)凉an柿d(恼re外ar=fr麻on笑t)握TH棵EN{掏Qu池eu渠e-OV六ER丢FL萌OW;RE俭TU唇RN稳}2.谎r缩慧ea骂r=re伴ar+13.舅I爱F类(灭re奶ar=m+1)悠TH骨EN袄re施ar=14.炕Q远(r尝ea辅r)=x5.梦s=16.英R切ET词UR特Nvo浸idad窄dc肚q(席q,m,re士ar,fr倒on贝t,s,x)ET怎q习[茧],x;in直tm,*re特ar,*fr度on雅t,*s;{焦if馅((戒*s==1)乐&坡&遇(*将re盆ar==炉*fr绞on背t)梯){pr衫in别tf神("

温馨提示

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

评论

0/150

提交评论