- /*
- *Copyright (c)2015,烟台大学计算机与控制工程学院
- *All rights reserved.
- *文件名称:复杂度-汉诺塔.cbp
- *作 者:李竹雅
- *完成日期:2015年9月15日
- *版 本 号:v1.0
- *
- *问题描述:领会“0207将算法变程序”部分建议的方法,将顺序表部分的算法变成程序。
实现顺序表基本运算有算法,依据“最小化”的原则进行测试。所谓最小化原则,指的是利用极可能少的基本运算,组成一个程序,并设计main函数完成测试。
*输入描述:无
*程序输出:依据各个函数而定
*/
( 1)目的是要测试“建立线性表”的算法CreateList,为查看建表的结果,需要实现“输出线性表”的算法DispList。在研习DispList中发现,要输出线性表,还要判断表是否为空,这样,实现判断线性表是否为空的算法ListEmpty成为必要。这样,再加上main函数,这个程序由4个函数构成。main函数用于写测试相关的代码。
<ol><li class="alt"><span><span class="preprocessor">#include<stdio.h> </span><span> </span></span></li><li><span></span><span class="preprocessor">#include<malloc.h> </span><span> </span></li><li class="alt"><span></span><span class="preprocessor">#define MaxSize 50 </span><span> </span></li><li><span></span><span class="keyword">typedef</span><span> </span><span class="datatypes">int</span><span> ElemType; </span></li><li class="alt"><span></span><span class="keyword">typedef</span><span> </span><span class="keyword">struct</span><span> </span></li><li><span>{ </span></li><li class="alt"><span> ElemType data[MaxSize]; </span></li><li><span> </span><span class="datatypes">int</span><span> length; </span></li><li class="alt"><span> </span></li><li><span> </span></li><li class="alt"><span>} SqList; </span></li><li><span> </span></li><li class="alt"><span></span><span class="keyword">void</span><span> CreateList(SqList *&l, </span><span class="datatypes">int</span><span> a[], </span><span class="datatypes">int</span><span> n); </span></li><li><span></span><span class="keyword">void</span><span> DispList(SqList *l); </span></li><li class="alt"><span></span><span class="datatypes">bool</span><span> ListEmpty(SqList *l); </span></li><li><span> </span></li><li class="alt"><span></span><span class="datatypes">int</span><span> main() </span></li><li><span>{ </span></li><li class="alt"><span> SqList *sq; </span></li><li><span> ElemType x[6]= {5,8,7,2,4,9}; </span></li><li class="alt"><span> CreateList(sq, x, 6); </span></li><li><span> DispList(sq); </span></li><li class="alt"><span> </span><span class="keyword">return</span><span> 0; </span></li><li><span>} </span></li><li class="alt"><span> </span></li><li><span></span><span class="keyword">void</span><span> CreateList(SqList *&l, </span><span class="datatypes">int</span><span> a[],</span><span class="datatypes">int</span><span> n) </span></li><li class="alt"><span>{ </span></li><li><span> </span><span class="datatypes">int</span><span> i=0; </span></li><li class="alt"><span> l=(SqList *)malloc(</span><span class="keyword">sizeof</span><span>(SqList)); </span></li><li><span> </span><span class="keyword">for</span><span>(i=0; i<n; i++) </span></li><li class="alt"><span> { </span></li><li><span> l->data[i]=a[i]; </span></li><li class="alt"><span> } </span></li><li><span> l->length=n; </span></li><li class="alt"><span>} </span></li><li><span></span><span class="keyword">void</span><span> DispList(SqList*l) </span></li><li class="alt"><span>{ </span></li><li><span> </span><span class="datatypes">int</span><span> i=0; </span></li><li class="alt"><span> </span><span class="keyword">if</span><span>(ListEmpty(l)) </span></li><li><span> </span><span class="keyword">return</span><span>; </span></li><li class="alt"><span> </span><span class="keyword">while</span><span>(i<l->length) </span></li><li><span> </span></li><li class="alt"><span> { </span></li><li><span> printf(</span><span class="string">"%d "</span><span>,l->data[i]); </span></li><li class="alt"><span> i++; </span></li><li><span> } </span></li><li class="alt"><span> printf(</span><span class="string">"\n"</span><span>); </span></li><li><span>} </span></li><li class="alt"><span> </span></li><li><span></span><span class="datatypes">bool</span><span> ListEmpty(SqList *l) </span></li><li class="alt"><span>{ </span></li><li><span> </span><span class="keyword">if</span><span>(l->length==0) </span></li><li class="alt"><span> { </span></li><li><span> </span><span class="keyword">return</span><span> 1; </span></li><li class="alt"><span> } </span></li><li><span> </span><span class="keyword">else</span><span> </span><span class="keyword">return</span><span> 0; </span></li><li class="alt"><span> </span></li><li><span>} </span></li></ol>
知识点总结:
线性表的创建及检测线性表是否为空表。