大家好,关于电脑基础软件很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于电脑基础软件没有了的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
实验一:线性表/栈与队
一、实验目的
了解实现线性表/栈与队/数组所涉及到的数据结构。
二、实验要求
因受时间限制,从以下给出的4个实验内容中任选3个,分析并补齐给出的源程序,运行相应的程序,检验运行结果,以此巩固对相应部分的理论知识的理解。
1.复习线性表、栈与队列的定义,理解顺序存储、链式存储的方法及基本操作。
2.复习C语言中数组、指针及结构体的概念、定义方式。
3.上机前准备好全部源程序。
4.计算机中需要安装vc6.0或vs2010。
5.程序中所用结构体定义于datastru.h中。
三、实验内容
熟悉vs2010环境下建立程序源文件与调试程序的流程。
1、完成有序表(顺序表)中插入一元素并保证仍然有序。
……(补充程序)
voidmain()
{
SEQUENLISTL;
intnum,i,k,x;
L.last=0;//置顺序表为空,表长为0
printf(&34;);
/*输入顺序表元素,建立有序表,值从小到大*/
scanf(&34;,&num);
while(num!=-99){
………(补充程序)
L.last++;
scanf(&34;,&num);
}
printf(&34;,L.last);
printf(&34;);
scanf(&34;,&num);
printf(&34;);
for(i=0;i<L.last;i++)
printf(&34;,L.datas[i]);
printf(&34;);
k=L.last-1;
while((k>=0)&&(num<L.datas[k]))/*查找插入位置i*/
k–;
for(i=L.last-1;i>=k+1;i–)
L.datas[i+1]=L.datas[i];/*移动元素*/
L.datas[k+1]=num;/*新元素插入*/
L.last++;/*表长加1*/
printf(&34;);
for(i=0;i<L.last;i++)
printf(&34;,L.datas[i]);
printf(&34;);
}
2、完成链表的结点插入、删除操作,并显示操作前后的线性表中各元素的情况。
……(补充程序)
voidinser_order(DATATYPE2x,LINKLIST*head){
LINKLIST*pr,*pn,*pp;
pr=head;pn=head->next;
while(pn!=NULL&&pn->data<x)
{
……(补充程序)
}
pp=(LINKLIST*)malloc(sizeof(LINKLIST));
……(补充程序)
}
intcount_head(LINKLIST*head)/*输出单链表元素值并计数*/
{
inti=0;
LINKLIST*p;
p=head->next;
printf(&34;);
while(p!=NULL)
{
……(补充程序)
}
printf(&34;);
returni;
}
LINKLIST*creatlink_order_head(LINKLIST*head)/*建立带头结点的有序单链表*/
{
LINKLIST*t,*p,*q;
charch;
t=(LINKLIST*)malloc(sizeof(LINKLIST));//建立带头结点的空链表
t->next=NULL;
head=t;
printf(&为结束字符:&39;39;)
{
……(补充程序)
}
returnhead;
}
intmain()
{
LINKLIST*head=NULL;
intnum;
charch;
printf(&34;);
head=creatlink_order_head(head);
num=count_head(head);
printf(&34;,num);
fflush(stdin);
printf(&34;);
ch=getchar();
inser_order(ch,head);
printf(&34;);
num=count_head(head);
printf(&34;,num);
return1;
}
3、运用栈完成十进制数与八进制数的转换。
……(补充程序)
voidinitstack(SEQSTACK*s)/*顺序栈初始化*/
{
……(补充程序)
}
DATATYPE1gettop(SEQSTACK*s)/*返回栈顶元素*/
{
DATATYPE1x;
……(补充程序)
returnx;
}
intpush(SEQSTACK*s,DATATYPE1x)/*元素x入栈*/
{
if(s->top==MAXSIZE-1)
{
……(补充程序)
}
else
{
……(补充程序)
return1;
}
}
DATATYPE1pop(SEQSTACK*s)/*返回栈顶元素并删除栈顶元素*/
{
DATATYPE1x;
if(s->top==0)
{
printf(&34;);
x=0;
}
else
{
……(补充程序)
}
returnx;
}
intmain()
{
SEQSTACKstack,*s;
intn;
s=&stack;
initstack(s);
n=0;
printf(&34;);
scanf(&34;,&n);
push(s,&&34;\\n\\n对应的八进制数为:&39;39;)
printf(&34;,pop(s));
printf(&34;);
return1;
}
4、实现带头结点链队元素的删除、插入操作,并显示操作前后的队列情况。
……(补充程序)
DATATYPE1dellinkqueue(LINKQUEUE*q)/*删除队头元素并返回*/
{
……(补充程序)
if(q->front==q->rear)
{
printf(&34;);
v=0;
}
else
{
……(补充程序)
}
returnv;
}
voidenlinkqueue(LINKQUEUE*q,DATATYPE1x)/*元素x入队列*/
{
(q->rear)->next=(LINKQLIST*)malloc(sizeof(LINKQLIST));
……(补充程序)
}
voidinitlinkqueue(LINKQUEUE*q)/*链队列初始化*/
{
……(补充程序)
}
voidoutlinkqueue(LINKQUEUE*q)/*链队列元素依次显示*/
{
LINKQLIST*p;
p=q->front;
printf(&34;);
while(p!=q->rear)
{
……(补充程序)
}
printf(&34;);
}
intmain()
{
LINKQUEUElq,*p;
intj;
p=&lq;
initlinkqueue(p);
printf(&34;);
scanf(&34;,&j);
while(j!=0)/*输入0——退出*/
{
if(j%2==1)
enlinkqueue(p,j);/*输入奇数——入队列*/
else
j=dellinkqueue(p);/*输入偶数——删除队头元素*/
outlinkqueue(p);
printf(&34;);
scanf(&34;,&j);/*继续输入*/
}
return1;
}
四、注意事项
注意程序中用到的结构体的来源及表示方法、调用方式。读懂程序结构,先补齐缺失代码,再调试运行程序。
五、实验总结和体会
好了,关于电脑基础软件和电脑基础软件没有了的问题到这里结束啦,希望可以解决您的问题哈!
