- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编写算
编写算法(共8分)
统计出单链表HL中结点的值等于给定值X的结点数。int CountX(LNode* HL,ElemType x)
int CountX(LNode* HL,ElemType x)
{ int i=0; LNode* p=HL;//i为计数器
while(p!=NULL)
{ if (P-data==x) i++;
p=p-next;
}//while, 出循环时i中的值即为x结点个数
return i;
}//CountX
??????? 编写算法(10分)
?
编写算法,将一个结点类型为Lnode的单链表按逆序链接,即若原单链表中存储元素的次序为a1,……an-1,an,则逆序链接后变为, an,an-1,……a1。
Void contrary (Lnode * HL)
{
Lnode *P=HL;
HL=NULL;
While (p!=null)
{
Lnode*q=p;
P=p→next;
q→next=HL;
HL=q;
}
}
算法设计题
设计判断单链表中结点是否关于中心对称算法。
typedef struct {int s[100]; int top;} sqstack;
int lklistsymmetry(lklist *head)
{
sqstack stack; stack.top= -1; lklist *p;
for(p=head;p!=0;p=p-next) {stack.top++; stack.s[stack.top]=p-data;}
for(p=head;p!=0;p=p-next) if (p-data==stack.s[stack.top]) stack.top=stack.top-1; else return(0);
return(1);
}
设计在链式存储结构上建立一棵二叉树的算法。
typedef char datatype;
typedef struct node {datatype data; struct node *lchild,*rchild;} bitree;
void createbitree(bitree *bt)
{
char ch; scanf(%c,ch);
if(ch==#) {bt=0; return;}
bt=(bitree*)malloc(sizeof(bitree)); bt-data=ch;
createbitree(bt-lchild); createbitree(bt-rchild);
}
设计判断一棵二叉树是否是二叉排序树的算法。
int minnum=-32768,flag=1;
typedef struct node{int key; struct node *lchild,*rchild;}bitree;
void inorder(bitree *bt)
{
if (bt!=0)
{inorder(bt-lchild); if(minnumbt-key)flag=0; minnum=bt-key; inorder(bt-rchild);}
}
算法设计题
设有一组初始记录关键字序列(K1,K2,…,Kn),要求设计一个算法能够在O(n)的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均小于Ki,右半部分的每个关键字均大于等于Ki。
void quickpass(int r[], int s, int t)
{
int i=s, j=t, x=r[s];
while(ij){
while (ij r[j]x) j=j-1; if (ij) {r[i]=r[j];i=i+1;}
while (ij r[i]x) i=i+1; if (ij) {r[j]=r[i];j=j-1;}
}
r[i]=x;
}
设有两个集合A和集合B,要求设计生成集合C=A∩B的算法,其中集合A、B和C用链式存储结构表示。
typedef struct node {int data; struct node *next;}lklist;
void intersection(lklist *ha,lklist *hb,lklist *hc)
{
lklist *p,*q,*t;
for(p=ha,hc=0;p!=0;p=p-next)
{ for(q=hb;q!=0;q=q-next) if (q-data==p-data) break;
if(q!=0){ t=(lklist *)malloc(sizeof
您可能关注的文档
最近下载
- 新人教版高中数学必修第一册全套课件练习题(3400页).pptx
- 设备维修岗基础测试试题及答案.docx
- 2025新人教版语文七年级下册《第三单元》大单元整体教学设计[2022课标].docx
- 新人教版高中数学必修第二册复数全套PPT课件.ppt VIP
- 吕维智讲座《生成式人工智能(GAI)为初中物理教学增效实操》(第三部分).pptx
- 蛋种鸡饲养管理.pptx VIP
- 2025中国蛋鸡产业发展趋势报告.pdf VIP
- 明明白白上好课:教学评一致性_札记.docx VIP
- 2025年无人机在自然灾害救援中的应用创新与挑战.docx
- 2025年小学三年级语文下册阅读理解专项训练(15篇) .pdf VIP
文档评论(0)