数据结构作业Word文档下载推荐.docx
- 文档编号:1058886
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:20
- 大小:18.20KB
数据结构作业Word文档下载推荐.docx
《数据结构作业Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构作业Word文档下载推荐.docx(20页珍藏版)》请在冰点文库上搜索。
return0;
}
voidInitList(SequenList*La)//用随机函数建立数组
{inti,n;
pleaseinputthelengthofSequenList\n"
scanf("
%d"
&
n);
La->
length=n;
for(i=0;
i<
n;
i++)
La->
data[i]=rand()%100;
voidPrintList(SequenList*La)//输出数组
{inti;
thelistdatais:
\n"
for(i=0;
La->
length;
printf("
%d"
La->
data[i]);
voidOrderList(SequenList*La)//数组选择法排序升序
{inti,j,p,t;
for(i=0;
{p=i;
for(j=i+1;
j<
j++)
if(La->
data[p]>
data[j])p=j;
t=La->
data[i];
data[i]=La->
data[p];
data[p]=t;
}
voidMergeList(SequenList*La,SequenList*Lb,SequenList*Lc)//合并数组升序
{inti,j,k;
i=0;
j=0;
k=0;
Lc->
length=La->
length+Lb->
while(i<
length&
&
Lb->
length)
{if(La->
data[i]<
data[j])
{Lc->
data[k]=La->
i++;
k++;
else
data[k]=Lb->
data[j];
j++;
length)
{Lc->
while(j<
作业21.建立两个递增有序链表带表头用头插法2.输出两个链表合并前的结果。
3.将两个单链表进行合并并保持递增有序。
4.输出合并结果。
cstdlib"
typedefintElemType;
typedefstructLNode{
ElemTypedata;
structLNode*next;
}LN;
structLNode*InitList();
voidPrintList(structLNode*la);
voidMergeList(structLNode*la,structLNode*lb,structLNode*lc);
{structLNode*head1,*head2,*head3;
head1=InitList();
head2=InitList();
head3=InitList();
PrintList(head1);
PrintList(head2);
MergeList(head1,head2,head3);
PrintList(head3);
return0;
structLNode*InitList()//初始化链表建立链表有表头
{intn,t;
structLNode*lp,*p;
lp=(LNode*)malloc(sizeof(LNode));
lp->
data=0;
next=NULL;
inputlengthoflist:
"
while(n>
0)
{printf("
pleaseinputdata:
scanf("
t);
p=(LNode*)malloc(sizeof(LNode));
p->
data=t;
next=lp->
next;
lp->
next=p;
n--;
returnlp;
voidMergeList(structLNode*la,structLNode*lb,structLNode*lc)//合并链表
{structLNode*L1,*L2,*L3;
L1=la->
L2=lb->
L3=lc;
la->
lb->
while(L1&
L2)
{if(L1->
data<
=L2->
data)
{L3->
next=L1;
L3=L1;
L1=L1->
}
next=L2;
L3=L2;
L2=L2->
L3->
next=L1?
L1:
L2;
voidPrintList(structLNode*lp)//输出链表
{structLNode*p;
thelistdata:
p=lp->
next;
while(p)
{printf("
p->
data);
p=p->
作业3分别用顺序栈和链栈用栈解决括号匹配问题。
1)顺序栈
#defineMAX_SIZE100
typedefstruct
{charstack[MAX_SIZE];
inttop;
}SeqStack;
voidInitStack(SeqStack&
s);
voidPush(SeqStack&
s,charch);
voidPop(SeqStack&
intCheck(SeqStack&
charGetTop(SeqStack&
intStackEmpty(SeqStack&
{SeqStacks;
InitStack(s);
if(Check(s))
printf("
匹配成功\n"
else
匹配不成功输入有误\n"
s)//初始化栈
{s.top=-1;
s,charch)//入栈
{if(s.top>
=MAX_SIZE-1)
thestackisoverflow\n"
else
{s.top++;
s.stack[s.top]=ch;
s)//出栈
{if(StackEmpty(s))
thestackisempty\n"
s.top--;
intCheck(SeqStack&
s)//配对检查
{charch;
while((ch=getchar())!
='
#'
)
{switch(ch)
{case'
{'
:
case'
['
:
('
Push(s,ch);
break;
case'
)'
if(!
StackEmpty(s)&
GetTop(s)=='
{Pop(s);
elsereturn0;
case'
]'
}'
default:
break;
return(StackEmpty(s));
s)//判栈是否为空
{if(s.top==-1)
return1;
return0;
s)//得到栈顶元素
{if(!
StackEmpty(s))
returns.stack[s.top];
栈已经为空\n"
2)链栈
typedefstructNode
{chardata;
structNode*next;
}LinkStack;
voidInitStack(LinkStack&
voidPush(LinkStack&
voidPop(LinkStack&
intCheck(LinkStack&
charGetTop(LinkStack&
intStackEmpty(LinkStack&
{LinkStacks;
s)//初始化栈
{s.next=NULL;
s.data=0;
s,charch)//入栈
{LinkStack*p;
p=(LinkStack*)malloc(sizeof(LinkStack));
if(p)
{p->
data=ch;
next=s.next;
s.next=p;
内存分配失败\n"
s)//出栈
if(StackEmpty(s))
{p=s.next;
s.next=s.next->
free(p);
intCheck(LinkStack&
s)//配对检查
{charch;
}elsereturn0;
{if(s.next)
s)
{returns.next->
data;
作业41.设计创建二叉树的程序函数名(CreatBitTree)可用递归的方法2.设计二叉树的三种遍历(前序
中序后序)递归的方法
typedefstructNode
{chardata;
structNode*Lc,*Rc;
}BTnode,*BTree;
//定义二叉树的结点
voidCreatBitTree(BTree&
T);
voidPreorder(BTree&
voidInorder(BTree&
voidPostorder(BTree&
{BTreeT;
CreatBitTree(T);
\n先序遍历\n"
Preorder(T);
\n中序遍历\n"
Inorder(T);
\n后序遍历\n"
Postorder(T);
T)//创建二叉树先序递归方法
{charch;
%c"
ch);
if(ch=='
T=NULL;
{T=(structNode*)malloc(sizeof(structNode));
if(!
T)
printf("
{T->
data=ch;
CreatBitTree(T->
Lc);
Rc);
T)//先序递归遍历二叉树
{if(T)
%c"
T->
data);
Preorder(T->
T)//中序递归遍历二叉树
{Inorder(T->
Inorder(T->
T)//后序递归遍历二叉树
{Postorder(T->
Postorder(T->
printf("
作业7
1)无向图的邻接矩阵存储深度优先搜索
#defineMAX_VERTEX_NUM50//顶点的最大数目
intvisited[MAX_VERTEX_NUM];
//访问标志数组typedefcharDatatype;
{Datatypevexs[MAX_VERTEX_NUM];
intedges[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
intn,e;
//顶点数和边数
}Ugraph;
//无向图
voidCreate_UG(Ugraph&
ga);
voidDFS(Ugraphga);
voidDFSM(Ugraphga,inti);
{Ugraphga;
Create_UG(ga);
DFS(ga);
HelloWorld!
ga)//创建无向图
{inti,j,k,w;
输入无向图的顶点数和边数:
%d%d"
ga.n,&
ga.e);
请输入顶点信息建立顶点信息表:
getchar();
ga.n;
ga.vexs[i]);
getchar();
i++)//邻接矩阵初始化
for(j=0;
ga.edges[i][j]=0;
for(k=0;
k<
ga.e;
k++)
请输入第%d条边的顶点序号ij和权值w:
k+1);
%d%d%d"
i,&
j,&
w);
ga.edges[i-1][j-1]=w;
ga.edges[j-1][i-1]=w;
voidDFS(Ugraphga)//深度优先搜索法遍历无向图
visited[i]=0;
//访问标志数组初始化
visited[i])
DFSM(ga,i);
voidDFSM(Ugraphga,inti)//在邻接矩阵上递归的深度优先遍历图
{intj;
深度优先遍历结点:
%c\n"
ga.vexs[i]);
visited[i]=1;
for(j=0;
if((ga.edges[i][j]!
=0)&
!
visited[j])
DFSM(ga,j);
2)无向图的邻接表存储深度优先搜索
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 作业