数据结构上机程序.docx
《数据结构上机程序.docx》由会员分享,可在线阅读,更多相关《数据结构上机程序.docx(73页珍藏版)》请在冰豆网上搜索。
数据结构上机程序
/*
作业要求:
试编写一算法,实现两个顺序表的合并。
(说明:
将共同拥有的元素只存其一。
)
缺点:
1.因为是第一次上机,没有顾及到良好的人际界面和程序流程。
2.并且没有将VC可输出中文的良好功能利用起来
3.试验了一下,发现在一个顺序表内不能输入相同的元素
心得:
重新熟悉了一下C语言,为以后的编程提供了基础
*/
#include
#include
#defineSeqListstructlisttype
#defineMaxSize1000
SeqList
{
intdata[MaxSize];
intlast;
};
voidfuzhi(SeqList*L)//用键盘连续输入顺序表的值
{
inta;
printf("inputnumber,'0'willexit\n");
scanf("%d",&a);
while((a!
=0)&&(L->last<999))
{
L->last++;
if(a!
=0)
L->data[L->last]=a;
scanf("%d",&a);
}
}
main()
{inti,j;
SeqList*a,*b,*c;
a=malloc(sizeof(SeqList));
a->last=-1;
b=malloc(sizeof(SeqList));
b->last=-1;
c=malloc(sizeof(SeqList));
c->last=-1;//对三个顺序表进行初始化
fuzhi(a);printf("OK\n");//试验了一下,发现在一个顺序表内不能输入相同的元素
fuzhi(b);printf("OK\n");//在两个顺序表之间却可以
for(i=0;i<=a->last;i++)
{
c->data[i]=a->data[i];
}
c->last=a->last;//将a顺序表的值先赋给c顺序表
for(i=0;i<=b->last;i++)
{
for(j=0;j<=c->last;j++)
{
if(b->data[i]==c->data[j])
break;//排除b顺序表与c顺序表中相同的元素
}
if(j>c->last){c->last++;c->data[c->last]=b->data[i];}
}//若查找发现没有相同,则添加入c顺序表
for(i=0;i<=c->last;i++)
{
printf("%d\t",c->data[i]);
}//输出c顺序表中的各个元素
printf("\n");
}
/*
作业内容:
线性表的定义、创建、插入和删除操作,并将数据元素显示出来
缺点:
本程序只能够用一遍,也就是说建立后就没法在此建立了
优点:
照顾到了程序结构的合理排布,并加入了良好的人机界面
心得:
此程序很简单,但是还是用上了结构体,是为了熟悉他的操作和应用
*/
#include
#include
#include
#include"iostream.h"
#include"ctype.h"
#include"fstream.h"
#include"iomanip.h"
#include
/***********结构体***********/
#defineSeqliststructlisttype
Seqlist
{
intdata[1000];//存储元素值
intlast;//元素个数
};
/*************函数声明***********/
chuangjian(Seqlist*);
insert(Seqlist*);
delet(Seqlist*);
display(Seqlist*);
search(Seqlist*);
/***********主函数************/
main()
{
Seqlist*L;chara;
L=malloc(sizeof(Seqlist));
L->last=-1;//初始化
while
(1)
{
printf("chuangjian=1\n");
printf("insert=2\n");
printf("delete=3\n");
printf("display=4\n");
printf("search=5\n");
scanf("%d",&a);//人机界面
switch(a)
{
case1:
chuangjian(L);break;
case2:
insert(L);break;
case3:
delet(L);break;
case4:
display(L);break;
case5:
search(L);break;
default:
printf("Fail\n");
}//调用各个函数
system("pause");//暂停
system("cls");//清屏
}
}
/***********创建函数************/
chuangjian(Seqlist*L)
{
inta;
if(L->last!
=-1)printf("yijianli\n");//判断是否已经有元素
else
{
printf("inputnumber,'-1'exit\n");
scanf("%d",&a);
while(a!
=-1&&L->last<=999)
{
L->last++;
L->data[L->last]=a;
printf("OK\n");
printf("inputnumber,'-1'exit\n");
scanf("%d",&a);
}//用键盘输入各个元素的值,当为-1时结束
}
printf("chuangjianchenggong\n");
};
/***********后插函数************/
insert(Seqlist*L)
{
inta;
if(L->last>999)
printf("biaoman");//判断线性表是否表满
else
{
printf("inputnumberwhichyouwanttoinsert\n");
scanf("%d",&a);
L->last++;
L->data[L->last]=a;
printf("charuchenggong\n");
}
}
/***********遍寻函数************/
search(Seqlist*L)
{
inta,i;
printf("inputnumberwhichyouwanttosearch\n");
scanf("%d",&a);//输入待寻找的元素
for(i=0;i<=L->last;i++)
{
if(a==L->data[i])
break;
}//依次对比
if(i>L->last)printf("meiyou\n");//没有找到
elseprintf("OK\nzaidi%dge",(i+1));
}
/***********删除函数************/
delet(Seqlist*L)
{
inta,i;
printf("inputnumberwhichyouwanttodelete\n");
scanf("%d",&a);//输入待删除的元素
for(i=0;i<=L->last;i++)
{
if(a==L->data[i])
break;
}//依次对比
if(i>L->last)printf("meiyou\n");//没有找到
else
{
printf("shanchuchenggong\n");
for(;ilast;i++)
L->data[i]=L->data[i+1];
L->last--;
}//删除该元素,并将线性表长度减一
}
/***********全显函数************/
display(Seqlist*L)
{
inti;
if(L->last==0)printf("kongbiao\n");
else
{
printf("Now,yixiajiweineirong\n");
for(i=0;i<=L->last;i++)
printf("%d\t",L->data[i]);
}//依次输入元素值
printf("\n");
}
/*
作业内容:
链表的定义、创建、插入和删除操作,将数据元素显示出来。
心得:
链表相对于线性表来说,不用担心空间大小的问题,更方便些
*/
#include
#include
#include
#include
/**********结构体声明***********/
#defineSLNODEstructnode
SLNODE
{
intdata;
SLNODE*next;
};
/*************函数声明***********/
chuangjian(SLNODE*);
insert(SLNODE*);
delet(SLNODE*);
display(SLNODE*);
search(SLNODE*);
/***********主函数************/
main()
{
SLNODE*L;chara;
L=malloc(sizeof(SLNODE));L->next=NULL;
while
(1)
{
printf("chuangjian=1\n");
printf("insert=2\n");
printf("delete=3\n");
printf("display=4\n");
printf("search=5\n");
scanf("%d",&a);//人机界面
switch(a)
{
case1:
chuangjian(L);break;
case2:
insert(L);break;
case3:
delet(L);break;
case4:
display(L);break;
case5:
search(L);break;
default:
printf("Fail\n");
}
system("pause");//暂停
system("cls");//清屏
}
}
/**********创建函数*************/
chuangjian(SLNODE*L)
{
inta;SLNODE*p,*q;
if(L->next!
=NULL)printf("yijianli\n");//判断是否建立
else
{
printf("