资源描述:
《算法设计练习题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、算法设计练习题1、设一棵二叉树以二叉链表为存储结构,结点结构为lchild
2、data[rchild。设■一个算法,求在前根序列中处于笫k个位置的结点。1•Bitreptrsearch(bitreptrt,intk){if(t!=null){count++;if(count==k)rcturn(t);else{search(t->lchild5k);search(t->rchild,k);2、设某单链表L的结点结构为
3、咕
4、nexj,编写算法判断该链表的元索是否是递增的。3、设有一单链表L,结点结构为辰喇ncxt
5、,结点个数至少3个,试画出
6、链表L的结构图,并编写算法判断该单链表L中的元素是否成等差关系,即:设各元索值次为a,,a2,a3/-,an,判断爲+
7、-爲=叶生_1是否成立,其中i满足2<=i<=n-l.3.Intisviser(lklistL){P=L;while(p->next!=null)if(p->datanext->data)p=p->next;elsercturn(O);return(l);单链表的结构图如下图所示。a2an算法:intisrise(lklistL){p=L->next;b=p->data-L->data;while(p->nex
8、t!=NULL){q=p->next;if(q->data-p->data!=b)return(O)elsep=q;}rctum(l);4、设有一棵二义树以二义链表作为存储结构,结点结构为
9、lchildld&lrchild
10、,其中data域中存放一个字符,设计一个算法按前根遍历顺序仅打印出data域为数字的字符(即<=data<=9)4.VoidNchar(bitreptrt){讦(t!=Null){if(t->data>='O')&&(t->data<=49?)printf("%d",t->data);Nchar(t->lchild)
11、;Nchar(t->rchild);6、给出求二义树的结点数的算法。二叉树的二叉链衣存储表示:typedefstructBiTNode{DataTypcdata;structBiTNode*lchild,*rchild;}BiTNode,*BiTree;6.intnodcs(BiTrcct){intnl,nr;if(t==NULL)return0;if(t->lchild==NULL&&t->rchild=NULL)return1;nl=nodes(t->lchild);nr=nodes(t->rchild);rcturn(nl+nr+
12、l);7.写出一个删除单链表的表头结点和表尾结点的算法。单链表的结点类型及单链表类型定义:typedefstructnode{DataTypedata;structnode*next;}Node,*LinkList;7.intdelht(Node*head){Node*q;if(*head==NULL)return0{q=head->next;free(*head);*hcad=q;}if(q!=NULL){if(q->next==NULL)(free(q);*head=NULL}}else{while(q->next->next!=N
13、ULL)q=q->next;free(q->next);q->next=NULL;}}return0;}8、己知一带头结点的单链表,由头指针H指向,具结点的类型如2typedefstructnode{elemtypedata;structnode*next;}NODE,*NODEPTR;现要在链表屮删除具关键字为aidkey的结点,其程序如下:intdeletelm(NODEPTRH,keytypeaidkey)/*若删除成功,则返回1,否则返回0*/{NODEPTRprc,p;pre=H;p=H->next;while(p&&p->d
14、ata.key!=aidkey){pre二p;①:8.①p二p->next;②pre->ncxt=p->next;}if(p){②;free(p);return1;}elsereturn0;}9、10、编写一个函数:将两个递增有序的单链表A和B归并生成一个递减有序的单链表C,要求利用原表(即A表和B表)的结点空间存放表Co假设线性表的单链表存储结构如门typedefstructLNode{intdata;structLNodc*ncxt;JLNode,*LinkList;10、解:分析:设A,B,C均为不带头结点的单链表(1)当冇序表A
15、,B均非空时,找出两表中元索最小的一个元索,然后将此结点插入到C表中,重复上述步骤。(2)当A,B两表有一个为空表时,将另一表中元素顺序地插入到C表中。(3)由于C按递减排序,因此在C表中插入元素时,应始终