下载此文档

经典数据结构上机题—答案.doc


文档分类:IT计算机 | 页数:约49页 举报非法文档有奖
1/49
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/49 下载此文档
文档列表 文档介绍
该【经典数据结构上机题—答案 】是由【艾米】上传分享,文档一共【49】页,该文档可以免费在线阅读,需要了解更多关于【经典数据结构上机题—答案 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。经典数据结构上机题—答案
typedefintElemType;
typedefstructlist
{ElemTypeelem[MAXSIZE];
intlength;
}Sqlist;
voidCreatlist(Sqlist&L)
{inti;
printf("请输入顺序表的长度:"); //输入一组整型元素序列,建立一个顺序表。
scanf("%d",&);
for(i=0;i<;i++)
scanf("%d",&[i]);
}
voidprintlist(Sqlist&L) //以输出的形式实现对该顺序表的遍历
{inti;
for(i=0;i<;i++)
printf("%d",[i]);
printf("\n");
}
voidSearchlist(Sqlist&L,intx) //在顺序表中进行顺序查找某一元素x,查找成功则返回其存储位置i,否则返回错误信息
{inti,k=-1;
for(i=0;i<;i++)
if([i]==x){
k=i+1;printf("%d",k);}
if(k==-1)
printf("error!");
printf("\n");
}
voidInseri(Sqlist&L,inti,intx) //在顺序表的第i个位置上插入一个元素x
{intj;
for(j=;j>=i;j--)
[j]=[j-1];
[j]=x;
++;
}
voidDelete(Sqlist&L,inti) //删除顺序表中第i个元素
{intj;
for(j=i;j<;j++)
[j-1]=[j];
--;
}
voidInsert(Sqlist&L,intx) //输入一个元素x,把它插入到有序表中,使顺序表依然有序。
{inti,j;
if(==MAXSIZE)exit(OVERFLOW); //表满,不能插入
for(i=1;i<=&&[i-1]<=x;i++);
for(j=;j>=i;j--)
[j]=[j-1];
[i-1]=x;
++;
}
voidCreatlist_sorted(Sqlist&L) //利用有序表插入算法建立一个有序表
{inti,num;
ElemTypex;
=0;
printf("请输入顺序表的长度:");
scanf("%d",&num);
for(i=1;i<=num;i++)
{
scanf("%d",&x);
Insert(L,x);
}
}
voidMerger(Sqlist&p,Sqlist&r,Sqlist&c)//建立两个非递减有序表,并把它们合并成一个非递减有序表
{
ElemType*a,*b,i=0,j=0,k=0;
a=&[0];
b=&[0];
=+;
while(i<&&j<)
{if(*a>=*b)
{[k]=*b;b++;k++;j++;}
else{[k]=*a;a++;k++;i++;}
}
if(j==)
for(;k<;k++)
{[k]=*a;a++;}
elseif(i==)
for(;k<;k++)
{[k]=*b;b++;}
}
voidmain()
{SqlistL,M,N;
intx,i,n;
printf(".\n");
printf(".\n");
printf(".\n");
printf(".\n");
printf(".\n");
printf(".\n");
printf(",并把它们合并成一个非递减有序表.\n");
printf(",把它插入到有序表中,使顺序表依然有序.\n");
while(1){
printf("请选择:");
scanf("%d",&n);
switch(n)
{case1:Creatlist(L);break;
case2:printlist(L);break;
case3:printf("请输入要查找的元素x:");
scanf("%d",&x);
Searchlist(L,x);break;
case4:printf("请输入要插入的位置i:");
scanf("%d",&i);
if(i<1||i>+1){
printf("error!\n");break;}
printf("请输入要插入的值x:");
scanf("%d",&x);
Inseri(L,i,x);
printlist(L);break;
case5:printf("请输入要删去的元素的位置i:");
scanf("%d",&i);
if(i<1||i>){
printf("error!\n");break;}
Delete(L,i);
printlist(L);break;
case6:Creatlist_sorted(L);
printlist(L);break;
case7:Creatlist_sorted(L);
Creatlist_sorted(M);
Merger(L,M,N);
printlist(N);break;
case8:Creatlist_sorted(L);
printf("请输入要插入的元素x:");
scanf("%d",&x);
Insert(L,x);
printlist(L);break;
}
}
}
实验二链式存储结构(一)----单向链表的有关操作
实验学时3学时
背景知识:单向链表的插入、删除及应用。
目的要求

、删除算法及其应用算法的程序实现。
实验内容
,建立一个带头结点的单向链表(无序)。

(不允许申请新的结点空间)。

,并利用该函数建立一个非递减有序单向链表。
,然后合并成一个非递增链表。
,然后合并成一个非递减链表。
,实现将其分解成两个链表,其中一个全部为奇数,另一个全部为偶数(尽量利用已知的存储空间)。
*。
,分别调试上述算法。
*:利用链表实现一个班级学生信息管理(数据录入、插入、删除、排序、查找等,并能够实现将数据存储到文件中)
/*单向链表的有关操作示例*/
/*类型定义及头文件部分,*/
#include<>
#include<>
typedefintElemType;//元素实际类型
typedefstructLNode{
ElemTypedata;
structLNode*next;
}LNode,*LinkList;//定义结点、指针类型名
//头插法建立无序链表
voidCreateList(LinkList&L){
LinkListp;
ElemTypee;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
printf("头插法建立链表,以0结束\n");
scanf("%d",&e);
while(e){
p=(LinkList)malloc(sizeof(LNode));
p->data=e;
p->next=L->next;
L->next=p;
scanf("%d",&e);
}
}
/*非递减有序单向链表L插入元素e序列仍有序*/
voidInsert_Sort(LinkList&L,ElemTypee){
LinkListp,s;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
p=L;
while(p->next&&p->next->data<=e)
p=p->next;/*查找插入位置*/
s->next=p->next;/*插入语句*p结点后插入*s结点*/
p->next=s;
}
/*建立递增有序的单向链表*/
voidCreate_Sort(LinkList&L){
ElemTypee;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
printf("建立有序表,输入任意个整型数据以0结束\n");
scanf("%d",&e);
while(e){
Insert_Sort(L,e);
scanf("%d",&e);
}
}
/*单向链表的遍历*/
voidTraverse(LinkListL){
LinkListp;
printf("遍历链表");
for(p=L->next;p;p=p->next)

经典数据结构上机题—答案 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数49
  • 收藏数0 收藏
  • 顶次数0
  • 上传人艾米
  • 文件大小1.87 MB
  • 时间2023-03-17