电大数据结构程序题_第1页
电大数据结构程序题_第2页
电大数据结构程序题_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、typedef struct int key;NODE;void selsort(NODE a,int n)int i,j,k;NODE temp;for(i=1;i=(1);i+) k=i;for(j=i+1;j= _;j+)if(aj.keyak.key);if(i!=k)temp=ai;(4);(5);答案:(1)n-1( 2)n ( 3)k=j (4)ai=ak( 5)ak=temp2. 以下是用尾插法建立带头结点且有 n个结点的单向链表的程序,结点中的数据域从前向后依次为1,2,3,n, 完成程序中空格部分。NODE *create( n)NODE *head , *p, *q;in

2、t i;p=(NODE*)malloc(sizeof(NODE);head= (1);(2);p next=NULL; /*建立头结点 */for(i=1; idata;while (q-next!=NULL) q=q-next;_(1)q=p; p=p-n ext;while(p-data!=x) q=p;_(2)_(3)(1) q-next=head; (2) p=p-next; (3) q-next=p-next;4以下程序是中序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中左、右指针域分别为left和right,数据域data为字符型,BT指向根结点)。void In ord

3、er (struct BTreeNode *BT) if(BT!=NULL)(1);J2; _J3;(1) Inorder(BT-left)(2) printf(“ C ,BT-data) (3) Inorder(BT-right)3以下程序是后序遍历二叉树的递归算法的程序,完成程序中空格部分(树结构中,左、右指针域分别为left和right,数据域data为字符型,BT指向根结点)。void Postorder (struct BTreeNode *BT) if(BT!=NULL)(1);丄2; _(3;答案:(1) Postorder(BT-left)( 2)Postorder(BT-ri

4、ght) ( 3) printf( “c” ,BT-data)1 以下函数是二叉排序树的查找算法,若二叉树为空,则返回根结点的指针,否则,返回值是指向树结点的 结构指针p (查找成功p指向查到的树结点,不成功p指向为NULL完成程序中的空格typedef struct Bnode int key;structBnode *left;structBnode *right; Bno de;Bn ode *BSearch(B node *bt, i nt k)/* bt用于接收二叉排序树的根结点的指针,k用以接收要查找的关键字*/ Bn ode *p;if(bt=_(1)return (bt);p=

5、bt; while(p-key!=_(2) if(kkey)(3);else(4);if(p=NULL) break; return(5);答案:(1) NULL (2) k (3) p=p-left (4) p=p-right (5) p3设有一个头指针为head的不带头结点单向链表,p、q是指向链表中结点类型的指针变量,p指向链表中结点a, (设链表中没有结点的数据域与结点a的数据域相同),写出相关语句(1) .使该单向链表成为单向循环链表(2) 插入结点s使它成为a结点的直接前驱q=p; x=p-data; while (_(1) q=q-next;q-n ext=head;q=p; p

6、=p-n ext; while(p-data!=x) q=p;s-n ext=p; _ 答案:(1) q-next!=NULL (2) p=p-next; (3)q-next=s;2设线性表为(6,10,16, 4),以下程序用说明结构变量的方法建立单向链表,并输出链表 中各结点中的数据。#define NULL 0void mai n()NODE a,b,c,d,*head,*p;=6;=10;=16;=4; /*d是尾结点*/head= (1);=&b;=&c;=&d;(2); /*以上结束建表过程*/p=head; /*p为工作指针,准备输出链表*/doprintf( %dn”, (3)

7、;(4);while( (5);答案:(1)&a (2)d?next=NULL(3) p-data(4)p=p-next(5) p!=NULL1 .以下程序是折半插入排序的算法=设待排序的记录序列存放在a1,an中,以a0作为辅助 工作单元,以下程序是要把ai插入到已经有序的序列a1,-ai-1中。void binsort (NODE a ,int n) int x,i,j,s,k,m;for (i=2; i= _(1);i+ a0=ai;x= ai.key;s=1;j=i-1;while (s=j) m= _if( x=j+1;k-)一(5一=ak;aj+1=a0;1.答案:(1) n (2

8、) (s+j)/2;(3) j=m-1; s=m+1; ak+13. 以下函数为链栈的进栈操作,x是要进栈的结点的数据域,top为栈顶指针struct node ElemType data;struct node *n ext;struct node *top ;void Push(ElemType x)struct node *p;p=(struct no de*)malloc(丄1)_);p-data=x;(2;(3)_;答(1) sizeof (struct no de)(2) p-n ext=top (3) top=p2.以下程序是快速排序的算法设待序的记录序列存放在astart, -ae nd中,按记录的关键字进行快速排序,先进行一次划分,再分别进行递归调用void quicksort ( NODE a , int start ,int end ) int i,j;NODE mid ;if (start=e nd )return;i=start;j=e nd;mid=ai;while (ij) while(ij

温馨提示

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

评论

0/150

提交评论