线性表的栈和队列实验报告
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)、利用前面的实验建立一个顺序表,然后在第i个位置插入元素;
(3)、建立一个带头节点的单链表,节点的值域整型数据。要求将用户输入的数据按尾插入法来建立相应单链表
4.一个字符串中的任意一个子序列,若子序列中各字符值均相同,则成为字符平台。写一算法,输入任意以字符串S,输出S中长度最大的所有字符平台的起始位置及所含字符。注意,最大字符平台有可能不止一个。
}
}
int DeleQueue(Queue *Q,int *x)
{
if(Q->front == Q->rear)
{
printf("队列为空!\n");
return 0;
}
*x = Q->element[Q->front];
Q->front = (Q->front+1)%Maxsize;
return 1;
实验数据记录:(源代码及执行过程)
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 20
#define n 100
typedef struct Node
{
int element[Maxsize];
int front;
int rear;
}Queue;
int EnterQueue(Queue *Q,int x)
{
if((Q->rear+1)%Maxsize == Q->front)
{
printf("队列已满!\n");
return 0;
}
Q->element[Q->rear] = x;
Q->rear = (Q->rear+1)%Maxsize;
return 1;
实 验 报 告
实验名称:线性表的栈和队列
实验目的:(1)、熟悉C语言的上机环境,进一步掌握C语言的结构特点;
(2)、掌握线性表的队列的定义及C语言实现;
(3)、掌握线性表的链式储存结构——单链表的定义及C语言实现;
(4)、掌握线性表在书序表中的各种基本操作;
实验步骤:(1)、建立含N个数据的顺序表并输出该表中各元素的值及顺序表的长度;
{
return 1;
}
else
{
return 0;
}wk.baidu.com
}
int main(void)
{
char str[n];
int i=0,j=1,k=1,ch,p=1,flag=1;
Queue *Q;
Q = (Queue *)malloc(sizeof(Queue));
Q->front = Q->rear = 0;
}
int Donull(Queue *Q)
{
while(Q->front != Q->rear)
{
Q->element[Q->front] = 0;
Q->front = (Q->front+1)%Maxsize;
}
Q->front = Q->rear = 0;
if(Q->front == Q->rear)
printf("请输入字符串:");
gets(str);
while('\0' != *(str+i))
{ while(*(str+i+1) == *(str+i))
{
if(flag)
{
p = i;
flag = 0;
}
i++;
j++;
}
if(flag)
{
p = i;
}
if(j >= k)
{
if(j > k)
{
DeleQueue(Q,&j);
DeleQueue(Q,&k);
DeleQueue(Q,&ch);
printf("%-10d",k);
for(i = 0; i < j; i++)
{
printf("%c",ch);
}
printf("\n");
}
printf("\n");
system("pause");
{
Donull(Q);
k = j;
}
if(EnterQueue(Q ,j) == 0)break;
if(EnterQueue(Q,p+1) == 0)break;
if(EnterQueue(Q,*(str+i)) == 0)break;
}
j=1;
i++;
flag = 1;
}
while(Q->front < Q->rear)
(3)、建立一个带头节点的单链表,节点的值域整型数据。要求将用户输入的数据按尾插入法来建立相应单链表
4.一个字符串中的任意一个子序列,若子序列中各字符值均相同,则成为字符平台。写一算法,输入任意以字符串S,输出S中长度最大的所有字符平台的起始位置及所含字符。注意,最大字符平台有可能不止一个。
}
}
int DeleQueue(Queue *Q,int *x)
{
if(Q->front == Q->rear)
{
printf("队列为空!\n");
return 0;
}
*x = Q->element[Q->front];
Q->front = (Q->front+1)%Maxsize;
return 1;
实验数据记录:(源代码及执行过程)
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 20
#define n 100
typedef struct Node
{
int element[Maxsize];
int front;
int rear;
}Queue;
int EnterQueue(Queue *Q,int x)
{
if((Q->rear+1)%Maxsize == Q->front)
{
printf("队列已满!\n");
return 0;
}
Q->element[Q->rear] = x;
Q->rear = (Q->rear+1)%Maxsize;
return 1;
实 验 报 告
实验名称:线性表的栈和队列
实验目的:(1)、熟悉C语言的上机环境,进一步掌握C语言的结构特点;
(2)、掌握线性表的队列的定义及C语言实现;
(3)、掌握线性表的链式储存结构——单链表的定义及C语言实现;
(4)、掌握线性表在书序表中的各种基本操作;
实验步骤:(1)、建立含N个数据的顺序表并输出该表中各元素的值及顺序表的长度;
{
return 1;
}
else
{
return 0;
}wk.baidu.com
}
int main(void)
{
char str[n];
int i=0,j=1,k=1,ch,p=1,flag=1;
Queue *Q;
Q = (Queue *)malloc(sizeof(Queue));
Q->front = Q->rear = 0;
}
int Donull(Queue *Q)
{
while(Q->front != Q->rear)
{
Q->element[Q->front] = 0;
Q->front = (Q->front+1)%Maxsize;
}
Q->front = Q->rear = 0;
if(Q->front == Q->rear)
printf("请输入字符串:");
gets(str);
while('\0' != *(str+i))
{ while(*(str+i+1) == *(str+i))
{
if(flag)
{
p = i;
flag = 0;
}
i++;
j++;
}
if(flag)
{
p = i;
}
if(j >= k)
{
if(j > k)
{
DeleQueue(Q,&j);
DeleQueue(Q,&k);
DeleQueue(Q,&ch);
printf("%-10d",k);
for(i = 0; i < j; i++)
{
printf("%c",ch);
}
printf("\n");
}
printf("\n");
system("pause");
{
Donull(Q);
k = j;
}
if(EnterQueue(Q ,j) == 0)break;
if(EnterQueue(Q,p+1) == 0)break;
if(EnterQueue(Q,*(str+i)) == 0)break;
}
j=1;
i++;
flag = 1;
}
while(Q->front < Q->rear)