数据结构链表的基本操作附答案Word文件下载.docx
- 文档编号:17821329
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:12
- 大小:17.42KB
数据结构链表的基本操作附答案Word文件下载.docx
《数据结构链表的基本操作附答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据结构链表的基本操作附答案Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
n;
i++)
{
pb=(TYPE*)malloc(LEN);
printf("
inputNumberandName\n"
);
scanf("
%d%s"
&
pb->
num,&
name);
if(i==0)
pf=head=pb;
elsepf->
next=pb;
pb->
next=NULL;
pf=pb;
}
return(head);
}
TYPE*delet(TYPE*head,intnum)
TYPE*pf,*pb;
if(head==NULL)
{printf("
\nemptylist!
\n"
gotoend;
pb=head;
while(pb->
num!
=num&
&
next!
=NULL)
{pf=pb;
_______________;
if(pb->
num==num)
{if(pb==head)head=pb->
next;
else__________________
Thenodeisdeleted\n"
else
free(pb);
Thenodenotbeenfound!
end:
returnhead;
TYPE*insert(TYPE*head,TYPE*pi)
TYPE*pb,*pf;
{head=pi;
_______________________;
else
while((pi->
num>
num)&
(pb->
=NULL))
{pf=pb;
pb=pb->
if(pi->
num<
=pb->
num)
{if(head==pb)head=pi;
next=pi;
____________________;
{pb->
__________________}
voidprint(TYPE*head)
Number\t\tName\n"
while(head!
%d\t\t%s\n"
head->
num,head->
head=head->
Voidmain(void)
TYPE*head,*pnum;
intn,num;
inputnumberofnode:
"
%d"
n);
/*输入所建链表的结点数*/
__________________/*建立链表并把头指针返回给head*/
print(head);
Inputthedeletednumber:
num);
/*输入待删结点的学号*/
__________________/*删除一个结点*/
/*输出链表*/
Inputtheinsertednumberandname:
pnum=(TYPE*)malloc(LEN);
/*分配一个结点的内存空间*/
pnum->
/*输入待插入结点的数据域值*/
___________________/*插入pnum所指的结点*/
/*再次调用print函数输出链表*/
四、心得体会
typedefstructPolynode
{intcoef;
intexp;
structPolynode*next;
}Polynode,*Polylist;
PolylistPolyCreate()
{Polynode*head;
Polynode*rear,*s;
intc,e;
head=(Polynode*)malloc(sizeof(Polynode));
rear=head;
/*rear始终指向单链表的尾,便于尾插法建表*/
输入一元多项式(以0为结束标记):
printf("
要求:
1.按幂从小到大输入各结点:
2.没有两个结点具有相同的幂:
pleaseinputcande:
%d,%d"
c,&
e);
/*键入多项式的系数和指数项*/
while(c!
=0)/*若c=0,则代表多项式的输入结束*/
s=(Polynode*)malloc(sizeof(Polynode));
/*申请新的结点*/
s->
coef=c;
exp=e;
rear->
next=s;
/*在当前表尾做插入*/
rear=s;
again\n"
scanf("
rear->
/*将表的最后一个结点的next置NULL,以示表结束*/
returnhead;
PolylistPolyAdd(Polylistpolya,Polylistpolyb)
/*此函数用于将两个多项式相加,然后将和多项式存放在多项式polya中,并将多项式ployb删除*/
Polynode*p,*q,*pre,*temp;
intsum;
p=polya->
/*令p和q分别指向polya和polyb多项式链表中的第一个结点*/
q=polyb->
pre=polya;
/*r指向和多项式的尾结点*/
while(p!
=NULL&
q!
=NULL)/*当两个多项式均未扫描结束时*/
{
if(p->
exp<
q->
exp)
/*如果p指向的多项式项的指数小于q的指数,将p结点加入到和多项式中*/
{
pre->
next=p;
pre=p;
p=p->
}
else
if(p->
exp==q->
exp)/*若指数相等,则相应的系数相加*/
{
sum=p->
coef+q->
coef;
if(sum!
=0)
{
p->
coef=sum;
//__________________;
pre->
pre=p;
p=p->
temp=q;
q=q->
//___________________;
free(temp);
}
else
temp=p;
/*若系数和为零,则删除结点p与q,并将指针指向下一个结点*/
q=q->
//___________________________
}
else
pre->
next=q;
pre=q;
/*将q结点加入到和多项式中*/
//_________________;
if(p!
=NULL)/*多项式A中还有剩余,则将剩余的结点加入到和多项式中*/
pre->
else/*否则,将B中的结点加入到和多项式中*/
return(polya);
voiddisplay(Polylisthead)
{intfirst=1;
head=head->
while(head!
{if(first)
{if(head->
exp==1)
%dX"
coef);
elseif(head->
exp==0)
elseprintf("
%dX^%d"
coef,head->
exp);
first=0;
else{if(head->
printf("
+%dX"
elseif(head->
exp==0)printf("
+%d"
elseprintf("
+%dX^%d"
}printf("
voidmain()
{Polynode*poly1,*poly2,*poly3;
poly1=PolyCreate();
display(poly1);
poly2=PolyCreate();
display(poly2);
poly3=PolyAdd(poly1,poly2);
display(poly3);
实验四《链表的应用》------求两个一元多项式之和
(一)实验目的
掌握单链表的各种基本操作,包括单链表的建立和查找。
(二)实验内容与要求
1、用单链表存储一元多项式,将两个存储一元多项式的单链表相加产生结果
单链表。
2、假设要求用户按幂从小到大次序输入各结点,并且没有两个结点具有相
同幂,这样一个一元多项式的链表是按幂exp从小到大顺序排列的。
将这
两个有序单链表poly1和poly2按幂值相加得到一个新链表。
(三)算法
1、数据类型定义
结点存储结构定义为:
structpolynode{
intcoef;
系数
intexp;
幂
structpolynode*next;
};
2、参考代码
_____________________/*rear始终指向单链表的尾,便于尾插法建表*/
_________________________/*在当前表尾做插入*/
______________________-
__________________;
___________________;
___________________________
_________________;
while(_________________________)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 基本 操作 答案