C算法CommonWord格式.docx
- 文档编号:20389052
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:13
- 大小:16.97KB
C算法CommonWord格式.docx
《C算法CommonWord格式.docx》由会员分享,可在线阅读,更多相关《C算法CommonWord格式.docx(13页珍藏版)》请在冰豆网上搜索。
L->
next=L;
prior=L;
r=L;
while(flag)
{
c=getchar();
if(c!
='
$'
)
{
s=(DNode*)malloc(sizeof(DNode));
s->
data=c;
r->
next=s;
prior=r;
r=s;
}
else
flag=0;
L->
}/*while*/
}
#include"
common.h"
(第2页)
dlinklist.h"
intDlinkDel(DoubleListL,inti,ElemType*e)
DNode*p;
intk;
p=L;
k=0;
/*从"
头"
开始,查找第i个结点*/
while(p->
next!
=L&
&
k<
i)/*表未查完且未查到第i个时重复,找到p指向第i个*/
{
p=p->
next;
k=k+1;
}
if(p->
next==L)
returnERROR;
}
else
*e=p->
data;
p->
prior->
next=p->
next->
prior=p->
prior;
free(p);
returnOK;
voidmain()
DoubleListl;
inti;
intflag=0;
char*e;
l=(DNode*)malloc(sizeof(DNode));
printf("
请输入链表数据:
\n"
);
CreateList(l);
p=l->
while(p!
=l)
printf("
%c\n"
p->
data);
请输入要删除的位置:
scanf("
%d"
&
i);
e=(char*)malloc(sizeof(char));
flag=DlinkDel(l,i,e);
if(flag==1)
删除的元素是:
*e);
删除位置不合理!
"
Crlinklist.h(第3页)
typedefintElemType;
typedefstructNode/*结点类型定义*/
structNode*next;
}Node,*LinkList;
/*LinkList为结构指针类型*/
LinkListcrt_linklist()/*创建尾指针表示的循环链表*/
LinkListl;
intnum;
Node*p;
l=(Node*)malloc(sizeof(structNode));
l->
data=-1;
next=l;
请输入循环链表的元素(以-1结束):
num);
while(num!
=-1)
p=(Node*)malloc(sizeof(structNode));
data=num;
next=l->
l->
next=p;
scanf("
p=l;
returnp;
(第4页)
crlinklist.h"
LinkListmerge_2(LinkListRA,LinkListRB)
{/*此算法将两个采用尾指针的循环链表首尾连接起来*/
p=RA->
/*保存链表RA的头结点地址*/
RA->
next=RB->
/*链表RB的开始结点链到链表RA的终端结点之后*/
free(RB->
next);
/*释放链表RB的头结点*/
RB->
/*链表RA的头结点链到链表RB的终端结点之后*/
returnRB;
/*返回新循环链表的尾指针*/
LinkListla,lb,lc;
建立循环链表A,请输入数据!
:
la=crt_linklist();
p=la->
=la->
next)
%d\n"
建立循环链表B,请输入数据!
lb=crt_linklist();
p=lb->
=lb->
}(第5页)
lc=merge_2(la,lb);
合并后的循环链表为:
p=lc->
=lc->
dliklist.h
typedefcharElemType
(第6页)
intDlinkIns(DoubleListL,inti,ElemTypee)
DNode*s,*p;
开始,查找第i-1个结点*/
=L&
k<
i)/*表未查完且未查到第i-1个时重复,找到p指向第i个*/
}/*查找第i-1结点*/
next==L)/*如当前位置p为空表已找完还未数到第i个,说明插入位置不合理*/
插入位置不合理!
s=(DNode*)malloc(sizeof(DNode));
if(s)
s->
data=e;
prior=s;
else
chare;
请输入双向链表数据!
情输入插入位置和元素值:
%d,%c"
i,&
e);
DlinkIns(l,i,e);
插入后的链表为:
Linklist(第7页)
voidCreateFromTail(LinkListL)
Node*r,*s;
/*r指针动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/
while(flag)/*循环输入表中元素值,将建立新结点s插入表尾*/
c);
if(c!
s=(Node*)malloc(sizeof(Node));
next=NULL;
/*将最后一个结点的next链域置为空,表示链表的结束*/
}
(第8页)
linklist.h"
LinkListMergeLinkList(LinkListLA,LinkListLB)
/*将递增有序的单链表LA和LB合并成一个递增有序的单链表LC*/
Node*pa,*pb;
Node*r;
LinkListLC;
/*将LC初始置空表。
pa和pb分别指向两个单链表LA和LB中的第一个结点,r初值为LC*/
pa=LA->
pb=LB->
LC=LA;
LC->
r=LC;
/*当两个表中均未处理完时,比较选择将较小值结点插入到新表LC中。
*/
while(pa!
=NULL&
pb!
=NULL)
if(pa->
data<
=pb->
data)
next=pa;
r=pa;
pa=pa->
next=pb;
r=pb;
pb=pb->
}(第9页)
if(pa)/*若表LA未完,将表LA中后续元素链到新表LC表尾*/
r->
else/*否则将表LB中后续元素链到新表LC表尾*/
free(LB);
return(LC);
la=(Node*)malloc(sizeof(Node));
la->
请输入单链表A中的元素(以-1结束!
):
CreateFromTail(la);
单链表A中元素为:
%d"
请输入单链表B中的元素(以-1结束!
lb=(Node*)malloc(sizeof(Node));
lb->
CreateFromTail(lb);
单链表B中元素为:
lc=MergeLinkList(la,lb);
单链表C中元素为:
}(第10页)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 Common