3数据结构实验3链表Word格式.docx
- 文档编号:18947589
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:18
- 大小:49.67KB
3数据结构实验3链表Word格式.docx
《3数据结构实验3链表Word格式.docx》由会员分享,可在线阅读,更多相关《3数据结构实验3链表Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
stdlib.h>
typedefcharelemtype;
typedefstructnode{
elemtypedata;
structnode*next;
}node,*linklist;
//建立链表
linklistcreatelistf()
{
charch;
linklisthead;
node*p;
head=(linklist)malloc(sizeof(node));
//建立新节点
head->
next=NULL;
ch=getchar();
while(ch!
='
$'
)
{
p=(node*)malloc(sizeof(node));
//建立新的节点
p->
data=ch;
p->
next=head->
next;
//将head插入头结点
head->
next=p;
ch=getchar();
}
return(head);
}
//在链表的p指定节点后插入值为x的节点
intlink(node*p,charx)
node*s;
//定义指向节点的指针
s=(node*)malloc(sizeof(node));
s->
data=x;
//将值插入s数据域中
next=p->
next=s;
return1;
//删除指点节点后的节点
voidDelLinkList(node*p)
node*q;
if(p->
next!
=0)
q=p->
//q指向p的后续节点
next=q->
//修改p节点的指针域
free(q);
//释放q
//在链表中查找指定的节点
node*lbcz(node*h,elemtypex)
p=h->
while(p!
=0p->
data!
=x)
p=p->
return(p);
//链表的输出
voidprintlink(node*h)
printf("
\n"
);
printf("
%c"
p->
data);
p=p->
voidmain()
{charx;
intm;
chary;
node*a;
node*b;
输入值以'
结束:
a=createlistf();
printlink(a);
输入要查找的节点:
getchar();
scanf("
&
x);
b=lbcz(a,x);
DelLinkList(b);
输入要插入的值:
y);
m=link(b,y);
if(m)
插入成功!
"
else
插入失败!
二、源代码以及输入数据输出结果为:
//单链表中输入数据个数为10个,依次是{1,3,5,7,12,45,67,89,92,99}。
malloc.h>
typedefstructNode{
intdata;
//数据域
structNode*pNext;
//指针域
}NODE,*PNODE;
//
//函数声明
PNODEcreate_list(void);
voidtreaverse_list(PNODEPHead);
PNODELocate(PNODEpHead,inte);
//查找节点
intlink(PNODEp,inte);
//插入函数
intmain(void)
inte=25;
PNODEpHead=NULL;
//等价于structNode*Phead==NULL;
PNODEp;
pHead=create_list();
//create_list()//功能:
创建一个非循环链表,并将该量表的空间给pHead
treaverse_list(pHead);
p=Locate(pHead,e);
treaverse_list(p);
link(p,e);
return0;
PNODEcreate_list(void)
intval;
intlen;
//用于存放节点的有效个数
inti;
PNODEpHead=(PNODE)malloc(sizeof(Node));
if(NULL==pHead)
分配失败,程序终止:
exit(-1);
PNODEPTail=pHead;
PTail->
pNext=NULL;
请输入要生成的链表数据个数:
len="
%d"
len);
for(i=0;
i<
len;
i++)
请输入第%d个节点的值:
i+1);
scanf("
val);
PNODEpNew=(PNODE)malloc(sizeof(NODE));
if(NULL==pNew)
{
printf("
}
pNew->
data=val;
PTail->
pNext=pNew;
PTail=pNew;
returnpHead;
voidtreaverse_list(PNODEPHead)
PNODEp=PHead->
pNext;
=NULL)
%5d"
PNODELocate(PNODEpHead,inte)//查找节点
PNODEp=pHead->
//PNODEq=(PNODE)malloc(sizeof(Node));
while(p!
=NULL){
if(p->
pNext->
data<
e)
//q=p->
}elsebreak;
returnp;
intlink(PNODEpHead,inte)//插入
PNODEp=pHead;
PNODEq=(PNODE)malloc(sizeof(Node));
q->
data=e;
pNext=p->
pNext=q;
三、源代码以及实验结果为
#include<
typedefstructnode{
PNODEchuanjiang()//创建函数
PNODEhead;
NODE*p;
头插法建立链表\n"
请输入字符串,以回车键结束:
head=(PNODE)malloc(sizeof(NODE));
next=0;
while(ch!
\n'
{p=(NODE*)malloc(sizeof(NODE));
return(head);
voidplink(NODE*h)//输出
NODE*p;
p=h->
printf("
while(p!
{printf("
p=p->
voidshanchu(PNODEH){//删除
NODE*p,*q,*r;
p=H->
{q=p;
while(q->
=NULL)
{if(q->
next->
data==p->
data)
{r=q->
q->
next=r->
free(r);
}
elseq=q->
}
voidmain(){
NODE*h;
h=chuanjiang();
创建的链表是:
plink(h);
删除链表中相同的值:
shanchu(h);
删除后链表的值:
四、源代码以及实验结果为
//链接函数
PNODEtwoLinkList(PNODEA,PNODEB);
PNODEA=NULL;
PNODEB=NULL;
PNODEC=NULL;
A=create_list();
B=create_list();
treaverse_list(A);
treaverse_list(B);
C=twoLinkList(A,B);
treaverse_list(C);
PNODEtwoLinkList(PNODEA,PNODEB)//合并链表
PNODEpa=A->
PNODEpb=B->
PNODEpc;
PNODELc;
Lc=A;
Lc->
pc=Lc;
while(pa&
&
pb)
if(pa->
=pb->
pc->
pNext=pa;
pc=pa;
pa=pa->
else
{pc->
pNext=pb;
pc=pb;
pb=pb->
pc->
pNext=pa?
pa:
pb;
free(B);
return(Lc);
五、源代码以及实验结果为
PNODEchuanjiang()
charch;
PNODEhead;
head=(PNODE)malloc(sizeof(NODE));
head->
next=head;
ch=getchar();
while(ch!
{p=(NODE*)malloc(sizeof(NODE));
p->
return(head);
voidplink(NODE*h){//单链表的输出
voidpooiplink(PNODEh){//循环链表的输出
=h){
voidchaifen(PNODEh,PNODE*a,PNODE*b){
NODE*ar,*br,*p;
if(h->
next==h)return;
(*a)=(PNODE)malloc(sizeof(NODE));
(*a)->
next=*a;
ar=*a;
(*b)=(PNODE)malloc(sizeof(NODE));
(*b)->
br=*b;
=h)
{if(p->
data>
0'
&
9'
)
{ar->
ar=ar->
{br->
br=br->
}
ar->
br->
next=*b;
NODE*a;
PNODEb,c;
a=chuanjiang();
建立的循环单链表:
plink(a);
chaifen(a,&
b,&
c);
拆分后的数字字符链表:
plink(b);
拆分后的字母字符链表:
plink(c);
}六、实验体会:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 链表