数据结构上机考试含答案Word文档下载推荐.docx

上传人:b****4 文档编号:18053556 上传时间:2022-12-13 格式:DOCX 页数:43 大小:23.32KB
下载 相关 举报
数据结构上机考试含答案Word文档下载推荐.docx_第1页
第1页 / 共43页
数据结构上机考试含答案Word文档下载推荐.docx_第2页
第2页 / 共43页
数据结构上机考试含答案Word文档下载推荐.docx_第3页
第3页 / 共43页
数据结构上机考试含答案Word文档下载推荐.docx_第4页
第4页 / 共43页
数据结构上机考试含答案Word文档下载推荐.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

数据结构上机考试含答案Word文档下载推荐.docx

《数据结构上机考试含答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构上机考试含答案Word文档下载推荐.docx(43页珍藏版)》请在冰豆网上搜索。

数据结构上机考试含答案Word文档下载推荐.docx

stdlib.h>

#defineN5

#defineNULL0

//链表的存储结构

typedefstructLNode

{

intdata;

structLNode*next;

}LNode,*list;

//顺序创建链表

voidcreatList(list&

l,intn)

inti;

listp,q;

l=(list)malloc(sizeof(LNode));

//开辟头结点

p=l;

//指针p指向头结点

for(i=0;

i<

n;

i++)

{

q=(list)malloc(sizeof(LNode));

//新的结点

scanf("

%d"

&

q->

data);

p->

next=q;

//p的下一个结点指向新开辟的结点q

p=q;

//将p指针指向q

}

p->

next=NULL;

}

 

//归并排序

voidmergeList(list&

la,list&

lb,list&

lc)

{//将已经排好序的la,lb中的数重新排列成有序(非递减)

listpa,pb,pc;

pa=la->

next;

pb=lb->

lc=pc=la;

//默认将la做为lc的头结点(lb亦可)

while(pa&

&

pb)

{//让pc接到数据小的结点上,直到pa,pb两者有一指向空结点

if(pa->

data<

=pb->

data)

{pc->

next=pa;

pc=pa;

pa=pa->

else

next=pb;

pc=pb;

pb=pb->

pc->

next=pa?

pa:

pb;

//如果最后la有剩余结点,即将其直接加入到lc中,反之将lb的剩余结点加到lc中

free(lb);

voidprintList(listl)

listp;

p=l->

while(p)

{printf("

%d"

p->

p=p->

voidmain()

listla,lb,lc;

printf("

创建两个含%d个元素的链表,请输入:

\n"

N);

creatList(la,N);

creatList(lb,N);

mergeList(la,lb,lc);

printList(lc);

2.#include<

#defineOK1

#defineERROR0

//创建链表

for(inti=0;

//判断元素e是否在链表中

intinList(listl,inte)

if(p->

data==e)

returnOK;

//发现在里面,返回真值

p=p->

//否则指针后移,继续找

returnERROR;

//未找到,返回假值(没有执行returnOK;

语句)

//插入元素

voidinsertList(list&

l,int&

e)

listp,q,s;

//q为新插入的元素开辟一个存储空间的指针,s为p前一个指针,方便插入

s=l;

if(e<

=p->

data)

{//发现要插入的元素e比后面的小,开辟空间,并将e放入空间的数据域中

q=(list)malloc(sizeof(LNode));

q->

data=e;

while(s->

next!

=p)s=s->

//找到p前的一个指针

next=p;

//画图好好理解--->

s--->

p--->

s->

//q--->

break;

}

//输出链表

p=p->

listl;

inte;

创建%d个元素的链表,请输入%d个元素:

N,N);

creatList(l,N);

请输入要判断的元素:

"

);

scanf("

e);

if(inList(l,e))

printf("

YES"

else

insertList(l,e);

printList(l);

3.#include<

intinsertDeleteList(listl,inte)

q=l;

{

while(q->

=p)q=q->

//找到p前一个结点,方便删除操作

next=p->

//删除结点p

free(p);

returnOK;

}//发现在里面,返回真值

请输入要判断的元素"

if(!

insertDeleteList(l,e))

NO"

4.#include<

//链表排序

voidsortList(list&

l)

listp,q,r;

//p标记排序的轮数

intchang;

//用于交换结点中的数据

while(p->

=NULL)

q=l->

//每次比较从首结点开始

while(q->

r=q->

if(q->

data>

r->

data)//发现前一个比后一个大,交换数据

{chang=q->

data;

data=r->

data=chang;

q=q->

//相邻间下一个比较

//下一轮比较

sortList(l);

printList(l);

5.#include<

l->

//头结点也添加元素,方便输出

for(inti=1;

next=l;

//让最后一个p->

next指针指向头结点,构成循环链表

voidprintList(listl,intpos)

for(i=1;

pos-1;

i++)p=p->

//找到指定位置的前一个位置

q=p->

do

{

if(pos==1){printf("

}//如果指定位置为1,即按原样输出

else{p=p->

}//不然,p先移到指定的位置,输出其数据

}while(p->

=q);

//结束条件(p移到的下一个位置不是q,即不是最初的p,完成循环输出)

intpos;

创建%d个元素的循环链表,请输入%d个元素:

请指明从第几个位置输出循环链表中的元素:

pos);

while(pos<

=0||pos>

N)

输入的位置不存在,请重新输入..."

printList(l,pos);

11#include<

12#include<

q=p=l->

//没有执行returnOK;

语句,说明未找到

while(q->

//找到链尾

p=(list)malloc(sizeof(LNode));

//为链尾重新开辟空间

//接到链尾

next=q->

q->

//未找到,返回假值

13#include<

#defineError0

#definemaxSize100

//栈的存储结构

typedefstruct

int*base;

int*top;

intsize;

}stack;

//栈的初始化(顺序存储)

intinitStack(stack&

s)

{//开辟maxSize大小的空间,base和top都指向基地址,同时判断是否开辟成功,不成功返回0

(s.base=s.top=(int*)malloc(maxSize*sizeof(int))))returnError;

s.size=maxSize;

//栈的大小为maxSize

returnOK;

//进栈操作

intpush(stack&

s,inte)

*s.top=e;

//先将元素e赋值给s.top所指的存储空间

s.top++;

//top指针上移

//出栈操作

intpop(stack&

s,int&

if(s.base==s.top)returnError;

//如果栈为空,返回0

s.top--;

//top指针先后移

e=*s.top;

//将其所指的元素值赋给e

returne;

}

stacks;

intn,e;

请输入要创建栈的元素的个数:

n);

initStack(s);

push(s,e);

while(s.base!

=s.top)

pop(s,e));

14#include<

#definestackincrement8

//栈的存储结

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

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1