数据结构上机指导源程序.docx

上传人:b****1 文档编号:2838863 上传时间:2023-05-04 格式:DOCX 页数:340 大小:95.09KB
下载 相关 举报
数据结构上机指导源程序.docx_第1页
第1页 / 共340页
数据结构上机指导源程序.docx_第2页
第2页 / 共340页
数据结构上机指导源程序.docx_第3页
第3页 / 共340页
数据结构上机指导源程序.docx_第4页
第4页 / 共340页
数据结构上机指导源程序.docx_第5页
第5页 / 共340页
数据结构上机指导源程序.docx_第6页
第6页 / 共340页
数据结构上机指导源程序.docx_第7页
第7页 / 共340页
数据结构上机指导源程序.docx_第8页
第8页 / 共340页
数据结构上机指导源程序.docx_第9页
第9页 / 共340页
数据结构上机指导源程序.docx_第10页
第10页 / 共340页
数据结构上机指导源程序.docx_第11页
第11页 / 共340页
数据结构上机指导源程序.docx_第12页
第12页 / 共340页
数据结构上机指导源程序.docx_第13页
第13页 / 共340页
数据结构上机指导源程序.docx_第14页
第14页 / 共340页
数据结构上机指导源程序.docx_第15页
第15页 / 共340页
数据结构上机指导源程序.docx_第16页
第16页 / 共340页
数据结构上机指导源程序.docx_第17页
第17页 / 共340页
数据结构上机指导源程序.docx_第18页
第18页 / 共340页
数据结构上机指导源程序.docx_第19页
第19页 / 共340页
数据结构上机指导源程序.docx_第20页
第20页 / 共340页
亲,该文档总共340页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构上机指导源程序.docx

《数据结构上机指导源程序.docx》由会员分享,可在线阅读,更多相关《数据结构上机指导源程序.docx(340页珍藏版)》请在冰点文库上搜索。

数据结构上机指导源程序.docx

数据结构上机指导源程序

/*文件名:

algo2-1.cpp*/

#include

#include

#defineMaxSize50

typedefcharElemType;

typedefstruct

{

ElemTypeelem[MaxSize];

intlength;

}SqList;

voidInitList(SqList*&L)

{

L=(SqList*)malloc(sizeof(SqList));

L->length=0;

}

voidDestroyList(SqList*L)

{

free(L);

}

intListEmpty(SqList*L)

{

return(L->length==0);

}

intListLength(SqList*L)

{

return(L->length);

}

voidDispList(SqList*L)

{

inti;

if(ListEmpty(L))return;

for(i=0;ilength;i++)

printf("%c",L->elem[i]);

printf("\n");

}

intGetElem(SqList*L,inti,ElemType&e)

{

if(i<1||i>L->length)

return0;

e=L->elem[i-1];

return1;

}

intLocateElem(SqList*L,ElemTypee)

{inti=0;

while(ilength&&L->elem[i]!

=e)i++;

if(i>=L->length)

return0;

else

returni+1;

}

intListInsert(SqList*&L,inti,ElemTypee)

{

intj;

if(i<1||i>L->length+1)

return0;

i--;/*将顺序表位序转化为elem下标*/

for(j=L->length;j>i;j--)/*将elem[i]及后面元素后移一个位置*/

L->elem[j]=L->elem[j-1];

L->elem[i]=e;

L->length++;/*顺序表长度增1*/

return1;

}

intListDelete(SqList*&L,inti,ElemType&e)

{

intj;

if(i<1||i>L->length)

return0;

i--;/*将顺序表位序转化为elem下标*/

e=L->elem[i];

for(j=i;jlength-1;j++)

L->elem[j]=L->elem[j+1];

L->length--;

return1;

}/*文件名:

algo2-2.cpp*/

#include

#include

typedefcharElemType;

typedefstructLNode/*定义单链表结点类型*/

{

ElemTypedata;

structLNode*next;

}LinkList;

voidInitList(LinkList*&L)

{

L=(LinkList*)malloc(sizeof(LinkList));/*创建头结点*/

L->next=NULL;

}voidDestroyList(LinkList*&L)

{

LinkList*p=L,*q=p->next;

while(q!

=NULL)

{

free(p);

p=q;

q=p->next;

}

free(p);

}

intListEmpty(LinkList*L)

{

return(L->next==NULL);

}

intListLength(LinkList*L)

{

LinkList*p=L;inti=0;

while(p->next!

=NULL)

{

i++;

p=p->next;

}

return(i);

}

voidDispList(LinkList*L)

{

LinkList*p=L->next;

while(p!

=NULL)

{

printf("%c",p->data);

p=p->next;

}

printf("\n");

}

intGetElem(LinkList*L,inti,ElemType&e)

{

intj=0;

LinkList*p=L;

while(j

=NULL)

{

j++;

p=p->next;

}if(p==NULL)

return0;

else

{

e=p->data;

return1;

}

}

intLocateElem(LinkList*L,ElemTypee)

{

LinkList*p=L->next;

intn=1;

while(p!

=NULL&&p->data!

=e)

{

p=p->next;

n++;

}

if(p==NULL)

return(0);

else

return(n);

}

intListInsert(LinkList*&L,inti,ElemTypee)

{

intj=0;

LinkList*p=L,*s;

while(j

=NULL)

{

j++;

p=p->next;

}

if(p==NULL)/*未找到第i-1个结点*/

return0;

else/*找到第i-1个结点*p*/

{

s=(LinkList*)malloc(sizeof(LinkList));/*创建新结点*s*/

s->data=e;

s->next=p->next;/*将*s插入到*p之后*/

p->next=s;

return1;

}

}

intListDelete(LinkList*&L,inti,ElemType&e)

{intj=0;

LinkList*p=L,*q;

while(j

=NULL)

{

j++;

p=p->next;

}

if(p==NULL)/*未找到第i-1个结点*/

return0;

else/*找到第i-1个结点*p*/

{

q=p->next;/*q指向要删除的结点*/

p->next=q->next;/*从单链表中删除*q结点*/

free(q);/*释放*q结点*/

return1;

}

}/*文件名:

algo2-3.cpp*/

#include

#include

typedefcharElemType;

typedefstructDNode/*定义双链表结点类型*/

{

ElemTypedata;

structDNode*prior;/*指向前驱结点*/

structDNode*next;/*指向后继结点*/

}DLinkList;

voidInitList(DLinkList*&L)

{

L=(DLinkList*)malloc(sizeof(DLinkList));/*创建头结点*/

L->prior=L->next=NULL;

}

voidDestroyList(DLinkList*&L)

{

DLinkList*p=L,*q=p->next;

while(q!

=NULL)

{

free(p);

p=q;

q=p->next;

}

free(p);

}

intListEmpty(DLinkList*L)

{return(L->next==NULL);

}

intListLength(DLinkList*L)

{

DLinkList*p=L;inti=0;

while(p->next!

=NULL)

{

i++;

p=p->next;

}

return(i);

}

voidDispList(DLinkList*L)

{

DLinkList*p=L->next;

while(p!

=NULL)

{

printf("%c",p->data);

p=p->next;

}

printf("\n");

}

intGetElem(DLinkList*L,inti,ElemType&e)

{

intj=0;

DLinkList*p=L;

while(j

=NULL)

{

j++;

p=p->next;

}

if(p==NULL)

return0;

else

{

e=p->data;

return1;

}

}

intLocateElem(DLinkList*L,ElemTypee)

{

intn=1;

DLinkList*p=L->next;

while(p!

=NULL&&p->data!

=e){

n++;

p=p->next;

}

if(p==NULL)

return(0);

else

return(n);

}

intListInsert(DLinkList*&L,inti,ElemTypee)

{

intj=0;

DLinkList*p=L,*s;

while(j

=NULL)

{

j++;

p=p->next;

}

if(p==NULL)/*未找到第i-1个结点*/

return0;

else/*找到第i-1个结点*p*/

{

s=(DLinkList*)malloc(sizeof(DLinkList));/*创建新结点*s*/

s->data=e;

s->next=p->next;/*将*s插入到*p之后*/

if(p->next!

=NULL)p->next->prior=s;

s->prior=p;

p->next=s;

return1;

}

}

intListDelete(DLinkList*&L,inti,ElemType&e)

{

intj=0;

DLinkList*p=L,*q;

while(j

=NULL)

{

j++;

p=p->next;

}

if(p==NULL)/*未找到第i-1个结点*/

return0;

else/*找到第i-1个结点*p*/

{q=p->next;/*q指向要删除的结点*/

if(q==NULL)return0;/*不存在第i个结点*/

p->next=q->next;/*从单链表中删除*q结点*/

if(p->next!

=NULL)p->next->prior=p;

free(q);/*释放*q结点*/

return1;

}

}

voidSort(DLinkList*&head)/*双链表元素排序*/

{

DLinkList*p=head->next,*q,*r;

if(p!

=NULL)/*若原双链表中有一个或以上的数据结点*/

{

r=p->next;/*r保存*p结点后继结点的指针*/

p->next=NULL;/*构造只含一个数据结点的有序表*/

p=r;

while(p!

=NULL)

{

r=p->next;/*r保存*p结点后继结点的指针*/

q=head;

while(q->next!

=NULL&&q->next->datadata)/*在有序表中找插入*p的

前驱结点*q*/

q=q->next;

p->next=q->next;/*将*p插入到*q之后*/

if(q->next!

=NULL)q->next->prior=p;

q->next=p;

p->prior=q;

p=r;

}

}

}/*文件名:

algo2-4.cpp*/

#include

#include

typedefcharElemType;

typedefstructLNode/*定义单链表结点类型*/

{

ElemTypedata;

structLNode*next;

}LinkList;

voidInitList(LinkList*&L)

{

L=(LinkList*)malloc(sizeof(LinkList));/*创建头结点*/

L->next=L;

}voidDestroyList(LinkList*&L)

{

LinkList*p=L,*q=p->next;

while(q!

=L)

{

free(p);

p=q;

q=p->next;

}

free(p);

}

intListEmpty(LinkList*L)

{

return(L->next==L);

}

intListLength(LinkList*L)

{

LinkList*p=L;inti=0;

while(p->next!

=L)

{

i++;

p=p->next;

}

return(i);

}

voidDispList(LinkList*L)

{

LinkList*p=L->next;

while(p!

=L)

{

printf("%c",p->data);

p=p->next;

}

printf("\n");

}

intGetElem(LinkList*L,inti,ElemType&e)

{

intj=0;

LinkList*p;

if(L->next!

=L)/*单链表不为空表时*/

{

if(i==1)

{

e=L->next->data;return1;

}

else/*i不为1时*/

{

p=L->next;

while(j

=L)

{

j++;

p=p->next;

}

if(p==L)

return0;

else

{

e=p->data;

return1;

}

}

}

else/*单链表为空表时*/

return0;

}

intLocateElem(LinkList*L,ElemTypee)

{

LinkList*p=L->next;

intn=1;

while(p!

=L&&p->data!

=e)

{

p=p->next;

n++;

}

if(p==L)

return(0);

else

return(n);

}

intListInsert(LinkList*&L,inti,ElemTypee)

{

intj=0;

LinkList*p=L,*s;

if(p->next==L||i==1)/*原单链表为空表或i==1时*/

{

s=(LinkList*)malloc(sizeof(LinkList));/*创建新结点*s*/

s->data=e;s->next=p->next;/*将*s插入到*p之后*/

p->next=s;

return1;

}

else

{

p=L->next;

while(j

=L)

{

j++;

p=p->next;

}

if(p==L)/*未找到第i-1个结点*/

return0;

else/*找到第i-1个结点*p*/

{

s=(LinkList*)malloc(sizeof(LinkList));/*创建新结点*s*/

s->data=e;

s->next=p->next;/*将*s插入到*p之后*/

p->next=s;

return1;

}

}

}

intListDelete(LinkList*&L,inti,ElemType&e)

{

intj=0;

LinkList*p=L,*q;

if(p->next!

=L)/*原单链表不为空表时*/

{

if(i==1)/*i==1时*/

{

q=L->next;/*删除第1个结点*/

L->next=q->next;

free(q);

return1;

}

else/*i不为1时*/

{

p=L->next;

while(j

=L)

{

j++;

p=p->next;}

if(p==L)/*未找到第i-1个结点*/

return0;

else/*找到第i-1个结点*p*/

{

q=p->next;/*q指向要删除的结点*/

p->next=q->next;/*从单链表中删除*q结点*/

free(q);/*释放*q结点*/

return1;

}

}

}

elsereturn0;

}/*文件名:

algo2-5.cpp*/

#include

#include

typedefcharElemType;

typedefstructDNode/*定义双链表结点类型*/

{

ElemTypedata;

structDNode*prior;/*指向前驱结点*/

structDNode*next;/*指向后继结点*/

}DLinkList;

voidInitList(DLinkList*&L)

{

L=(DLinkList*)malloc(sizeof(DLinkList));/*创建头结点*/

L->prior=L->next=L;

}

voidDestroyList(DLinkList*&L)

{

DLinkList*p=L,*q=p->next;

while(q!

=L)

{

free(p);

p=q;

q=p->next;

}

free(p);

}

intListEmpty(DLinkList*L)

{

return(L->next==L);

}

intListLength(DLinkList*L){

DLinkList*p=L;inti=0;

while(p->next!

=L)

{

i++;

p=p->next;

}

return(i);

}

voidDispList(DLinkList*L)

{

DLinkList*p=L->next;

while(p!

=L)

{

printf("%c",p->data);

p=p->next;

}

printf("\n");

}

intGetElem(DLinkList*L,inti,ElemType&e)

{

intj=0;

DLinkList*p;

if(L->next!

=L)/*双链表不为空表时*/

{

if(i==1)

{

e=L->next->data;

return1;

}

else/*i不为1时*/

{

p=L->next;

while(j

=L)

{

j++;

p=p->next;

}

if(p==L)

return0;

else

{

e=p->data;

return1;}

}

}

else/*双链表为空表时*/

return0;

}

intLocateElem(DLinkList*L,ElemTypee)

{

intn=1;

DLinkList*p=L->next;

while(p!

=NULL&&p->data!

=e)

{

n++;

p=p->next;

}

if(p==NULL)

return(0);

else

return(n);

}

intListInsert(DLinkList*&L,inti,ElemTypee)

{

intj=0;

DLinkList*p=L,*s;

if(p->next==L)/*原双链表为空表时*/

{

s=(DLinkList*)malloc(sizeof(DLinkList));/*创建新结点*s*/

s->data=e;

p->next=s;s->next=p;

p->prior=s;s->prior=p;

return1;

}

elseif

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2