考研计算机统考真题.docx
- 文档编号:4271441
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:10
- 大小:16.01KB
考研计算机统考真题.docx
《考研计算机统考真题.docx》由会员分享,可在线阅读,更多相关《考研计算机统考真题.docx(10页珍藏版)》请在冰豆网上搜索。
考研计算机统考真题
/*2009年考研计算机统考真题第42题,题目要求如下:
*/
/*42.(15分)已知一个带有头结点的单链表,结
点结构为数据域data,指针域link,假设该链表
只给出了头指针list。
在不改变链表的前提下,请
设计一个尽可能高效的算法,查找链表中倒数第k
个位置上的结点(k为整数)。
若查找成功,算法
输出该结点的data域的值,并返回1;否则,只返
回0。
*/
#include
structnode;
typedefstructnode*pnode;
structnode
{
intdata;
pnodelink;
};
typedefstructnode*linklist;
linklistcreatenullist_link(void)
{
linklistlist;
list=(linklist)malloc(sizeof(structnode));
if(list!
=NULL)
list->link=NULL;
else
printf("outofspace!
\n");
return(list);
}
intinsertpost_link(pnodep,intx)
{
pnodeq=(pnode)malloc(sizeof(structnode));
if(q==NULL)
{
printf("outofspace!
!
!
\n");
return(0);
}
else
{
q->data=x;
q->link=p->link;
p->link=q;
return
(1);
}
}
intlocate_k(linklistlist_1,intk)
{
inti;
pnodep,q;
p=list_1->link;
q=list_1->link;
i=1;
while(p->link!
=NULL)
{
p=p->link;
i++;
if(i>k)q=q->link;/*从q所指结点到p所指结点共k个结点*/
}
printf("kelement:
%d",q->data);
}
main()
{
inti,l_data,k;
linklistlist;
pnodep,r;
list=createnullist_link();
printf("\n\n\ninputdata:
\n");
scanf("%d",&l_data);
p=list;
while(l_data!
=0)
{
insertpost_link(p,l_data);
p=p->link;/*省略这条语句结果将不正确*/
scanf("%d",&l_data);
}
p->link=NULL;
r=list->link;
while(r!
=NULL)/*将链表每个元素输出*/
{
printf("%d,",r->data);
r=r->link;
}
printf("\ninputk:
");
scanf("%d",&k);
locate_k(list,k);
}
2)#include
structseqlist
{
intMAXNUM;
intn;
int*element;
};
typedefstructseqlist*pseqlist;
pseqlistcreatenulllist_seq(intm)
{
pseqlistpalist=(pseqlist)malloc(sizeof(structseqlist));
if(palist!
=NULL)
{
palist->element=(int*)malloc(sizeof(int)*m);
if(palist->element)
{
palist->MAXNUM=m;
palist->n=0;
return(palist);
}
elsefree(palist);
}
else
printf("Outofspace!
!
\n");
}
main()
{
intm;
pseqlistpalist;
scanf("%d",&m);
palist=createnulllist_seq(m);
palist->element[0]=10;
printf("%d",palist->element[0]);
}
3)#include
structseqlist
{
intMAXNUM;
intn;
int*element;
};
typedefstructseqlist*pseqlist;
pseqlistcreatenulllist_seq(intm)
{
pseqlistpalist=(pseqlist)malloc(sizeof(structseqlist));
if(palist!
=NULL)
{
palist->element=(int*)malloc(sizeof(int)*m);
if(palist->element)
{
palist->MAXNUM=m;
palist->n=0;
return(palist);
}
elsefree(palist);
}
else
printf("Outofspace!
!
\n");
}
intlocate_seq(pseqlistpalist,intx)
{
intq;
for(q=0;q
if(palist->element[q]==x)
{
printf("indexofx:
%d",q);
return(q);
}
return(-1);
}
main()
{
intm,i,x;
pseqlistm_palist;
printf("inputm:
");
scanf("%d",&m);
m_palist=createnulllist_seq(m);
m_palist->n=5;
printf("input5values:
\n");
for(i=0;i<=(m_palist->n-1);i++)
scanf("%d",&m_palist->element[i]);
for(i=0;i<=(m_palist->n-1);i++)
printf("%d",m_palist->element[i]);
printf("inputx:
");
scanf("%d",&x);
locate_seq(m_palist,x);
}
4)#defineTRUE1
#defineFALSE0
#include
structseqlist
{intMAXNUM;
intn;
int*element;
};
typedefstructseqlist*pseqlist;
pseqlistcreatenulllist_seq(intm)
{
pseqlistpalist=(pseqlist)malloc(sizeof(structseqlist));
if(palist!
=NULL)
{
palist->element=(int*)malloc(sizeof(int)*m);
if(palist->element)
{
palist->MAXNUM=m;
palist->n=0;
return(palist);
}
elsefree(palist);
}
else
printf("Outofspace!
!
\n");
}
intinsertpre_seq(pseqlistpalist,intp,intx)
{
intq;
if(palist->n>=palist->MAXNUM)
{
printf("Overflow!
\n");
return(0);
}
if(p<0||p>palist->n)
{
printf("Notexist!
\n");
return(0);
}
for(q=palist->n-1;q>=p;q--)
palist->element[q+1]=palist->element[q];
palist->element[p]=x;
palist->n=palist->n+1;
return(TRUE);
}
main()
{
inti,p,x,m,q;
pseqlistpalist;
printf("\n\n\ninputm:
");
scanf("%d",&m);
palist=createnulllist_seq(m);
printf("input5values\n");
for(i=0;i<=4;i++)
{
scanf("%d",&palist->element[i]);
palist->n++;
}
printf("inputp:
");
scanf("%d",&p);
printf("inputx:
");
scanf("%d",&x);
insertpre_seq(palist,p,x);
for(q=0;q<=palist->n-1;q++)
printf("%d",palist->element[q]);
}
5)#defineTRUE1
#defineFALSE0
#include
structseqlist
{
intMAXNUM;
int*element;
intn;
};
typedefstructseqlist*pseqlist;
pseqlistcreatenulllist_seq(intm)
{
pseqlistpalist=(pseqlist)malloc(sizeof(structseqlist));
if(palist!
=NULL)
{
palist->element=(int*)malloc(sizeof(int)*m);
if(palist->element)
{
palist->MAXNUM=m;
palist->n=0;
return(palist);
}
elsefree(palist);
}
else
printf("Outofspace!
!
\n");
}
intdeletep_seq(pseqlistpalist,intp)
{
intq;
for(q=p;q<=palist->n-1;q++)
palist->element[q]=palist->element[q+1];
palist->n=palist->n-1;
for(q=0;q<=palist->n-1;q++)
printf("%d",palist->element[q]);
return(TRUE);
}
main()
{
inti,p,x,m;
pseqlistpalist;
printf("\n\n\ninputm:
");
scanf("%d",&m);
palist=createnulllist_seq(m);
printf("input5values:
");
for(i=0;i<=4;i++)
{
scanf("%d",&palist->element[i]);
palist->n++;
}
printf("inputp:
");
scanf("%d",&p);
deletep_seq(palist,p);
}
6)#include
structnode;
typedefstructnode*pnode;
structnode
{
intinfo;
pnodelink;
};
typedefstructnode*linklist;
linklistcreatenulllist_link(void)
{
linklistllist;
llist=(linklist)malloc(sizeof(structnode));
if(llist!
=NULL)
{
llist->link=NULL;
}
else
printf("outofspace!
\n");
return(llist);
}
main()
{
linklistllist;
llist=createnulllist_link();
llist->info=10;
printf("\n\n%d",llist->info);
}
7)#include
structnode;
typedefstructnode*pnode;
structnode
{
intinfo;
pnodelink;
};
typedefstructnode*linklist;
pnodelocate_link(linklistllist,datatypex)
{
pnodep;
if(llist==NULL)returnNULL;
p=llist->link;
while(p!
=NULL&&p->info!
=x)p=p->link;
returnp;
}
8)#include
structnode;
typedefstructnode*pnode;
structnode
{
intinfo;
pnodelink;
};
typedefstructnode*linklist;
intinsertpost_link(pnodep,datatypex)
{
pnodeq=(pnode)malloc(sizeof(structnode));
if(q==NULL)
{
printf("outofspace!
!
!
\n");
return(0);
}
else
{
q->info=x;
q->link=p->link;
p->link=q;
return
(1);
}
}
9)/*此算法完整演示链表创建、插入新元素和显示
链表元素*/
#include
structnode;
typedefstructnode*pnode;
structnode
{
intinfo;
pnodelink;
};
typedefstructnode*linklist;
linklistcreatenulllist_link(void)
{
linklistllist;
llist=(linklist)malloc(sizeof(structnode));
if(llist!
=NULL)
llist->link=NULL;
else
printf("outofspace!
\n");
return(llist);
}
intinsertpost_link(pnodep,intx)
{
pnodeq=(pnode)malloc(sizeof(structnode));
if(q==NULL)
{
printf("outofspace!
!
!
\n");
return(0);
}
else
{
q->info=x;
q->link=p->link;
p->link=q;
return
(1);
}
}
main()
{
inti,data;
charch;
linklistllist;
pnodep,r;
llist=createnulllist_link();
p=llist;
do
{
printf("输入数据(输入y继续,输入n退出):
");
scanf("%d,%c",&data,&ch);
insertpost_link(p,data);
p=p->link;
}while(ch=='y');
p->link=NULL;
r=llist->link;
while(r!
=NULL)
{
printf("%d,",r->info);
r=r->link;
}
}
10)#include
structnode;
typedefstructnode*pnode;
structnode
{
intinfo;
pnodelink;
};
typedefstructnode*linklist;
pnodelocatepre_link(linklistllist,pnodep)
{
pnodep1;
if(llist==NULL)return(NULL);
p1=llist;
while(p1!
=NULL&&p1->link!
=p)p1=p1->link;
return(p1);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 考研 计算机 统考
![提示](https://static.bdocx.com/images/bang_tan.gif)