实验二 栈和队列
一、 实验目的
1.熟悉栈和队列的顺序和链式存储结构
2.掌握栈和队列的基本运算
3.能够利用栈和队列的基本运算完成栈和队列应用的运算
二、 实验内容
1.设单链表中存放有n个字符,试编写算法,判断该字符串是否有中心对称的关系,例如xyzzyx是中心对称的字符串。(提示:将单链表中的一半字符先依次进栈,然后依次出栈与单链表中的另一半字符进行比较。)(文件夹:习题10_3)
typedef char datatype;
/*定义单链表结构类型*/
typedef struct node
{ datatype data;
struct node *next;
}linklist;
/*定义顺序栈结构类型*/
/*const int maxsize=40;*/
#define maxsize 40
typedef struct
{ datatype elements[maxsize];
int top;
}stack;
#include <stdio.h>
#include <stdlib.h>
#include "Project_10_3.h"
int symmetry( linklist * head , stack * s );
int main(int argc, char *argv[])
{
linklist * head;
stack *s;
datatype str[80];
/*
cin>>str;
*/
gets(str);
head = creat(str);
printlink(head);
setnull(s);printf("%d/n",length(head));
/*
if(symmetry(head,s)) cout<<"字符串/""<<str<<"/"中心对称/n";
else cout<<"字符串/""<<str<<"/"不是中心对称/n";
*/
if(symmetry(head,s))printf("字符串/"%s/"中心对称./n",str);
else printf("字符串/"%s/"不是中心对称./n",str);
puts(str);
system("PAUSE");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include "Project_10_3.h"
/*建立具有头结点的单链表*/
linklist* creat( datatype * str )
{ datatype *p=str;
linklist * head ;
linklist *s,*r;
head =(linklist*)malloc(sizeof(linklist));
r=head;
while(*p!='/0')
{
s=(linklist*)malloc(sizeof(linklist));
s->data=*p;
r->next=s;
r=s;
p++;
}
r->next=NULL;
return head;
}
/*求单链表长度*/
int length(linklist*head)
{
linklist *p=head->next;
int n=0;
while(p!=NULL)
{
n++;
p=p->next;
}
return n;
}
/*输出单链表*/
void printlink(linklist*head)
{ linklist *p = head->next;
while(p!=NULL)
{
/* cout<<p->data;*/
printf("%c",p->data);
p=p->next;
}
/*cout<<endl;*/
printf("/n");
return;
}
#include <stdio.h>
#include <stdlib.h>
#include "Project_10_3.h"
/*置栈空*/
void setnull(stack *s)
{
/*s=new stack;*/
s = (stack*)malloc(sizeof(stack));
s->top=-1;
return;
}
/*顺序栈入栈.h*/
void push(stack*s,datatype e)
{
s->top++;
s->elements[s->top]=e;
return;
}
/*顺序栈出栈*/
datatype pop(stack*s)
{
datatype temp;
temp=s->elements[s->top];
s->top--;
return temp;
}
#include <stdio.h>
#include <stdlib.h>
#include "Project_10_3.h"
int symmetry(linklist*head,stack*s)
{
int n=length(head)/2;
linklist*p=head->next;
int i;
for(i=0;i<n;i++){
push(s,p->data);
p=p->next;
}
if(length(head)%2==1)p=p->next;
while(p!=NULL)
{
if(pop(s)==p->data)
{
p=p->next;continue;
}
else return 0;
}
return 1;
}
分享到:
相关推荐
数据结构作业做的一个简单的停车场管理系统,主要使用栈和队列来模拟停车场及便道的车辆停放情况解决停车位安排及收费问题
实验4的主题是栈和队列,这是数据结构中的两种基本操作序列。栈被称为“后进先出”(LIFO)的数据结构,而队列则被称为“先进先出”(FIFO)的数据结构。这两种结构在计算机科学中有着广泛的应用。 栈是一种特殊的...
- 学生应具备一定的编程基础,例如C语言,以便在实践中应用栈和队列的概念。 6. **教学对象**: - 教学对象是计算机专业的大三学生,有一定的编程基础,但实践经验较少,因此需要结合实例和实验加强理解。 通过...
本书《数据结构实验与习题——线性表栈和队列串数组树与二叉树》旨在帮助学生更好地理解和实践这些概念。 首先,书中介绍了C语言基础知识,这是实现数据结构的基础。C语言的基本输入输出、函数及其参数传递、以及...
在课程实验和作业中,可能会遇到严蔚敏教授教材中的相关习题,这些习题旨在加深对栈和队列的理解,提高问题解决能力。比如3.5、3.6、3.10、3.21、3.29和3.32题,涵盖了栈和队列的多种应用场景和算法设计。 总之,...
作业和实验部分,学生被要求完成严蔚敏教材配套的习题,包括涉及栈和队列的题目,如3.5、3.6、3.10、3.21、3.29和3.32题。同时,还要求学生编写一个实用软件,利用数据结构知识,这可能涉及到实际编程和文档编写,...
在本实验作业中,我们将深入探讨C语言编程中的一个重要数据结构——链表。链表是一种动态数据结构,它不像数组那样需要预先分配连续的内存空间,而是通过节点间的指针链接来存储数据。这对于处理不确定数量的数据...
### 数据结构第三章作业答案解析(C语言) #### 选择题解析 **1. 经过以下栈运算后,x的值是( )。** ``` InitStack(s); Push(s,'a'); Push(s,'b'); Pop(s,x); Gettop(s,x); ``` - **选项分析:** - A. a - B. ...
本项目聚焦于使用C语言实现数据结构中的队列操作,包括增、删、改、查,这对于理解和掌握数据结构的基本原理至关重要。下面将详细阐述相关知识点。 ### 一、队列简介 队列是一种先进先出(First In First Out, FIFO...
在完成这个实验作业时,你需要理解和实现上述数据结构的创建、插入、删除、遍历等基本操作,并绘制相应的结构图,这将有助于你深入理解数据结构的逻辑和工作原理。同时,C语言的实践应用也将提升你的编程能力,为...
在计算机科学中,数据结构是组织、管理和存储数据的方式,以便于高效地访问和修改。这里我们讨论的是顺序表、链表以及循环队列,这些都是基本的数据结构,广泛应用于算法设计和程序实现中。 顺序表是一种线性数据...
本压缩包文件"数据结构实验和大作业设计.zip"包含了与数据结构相关的实践项目和学习资料,对于理解和掌握数据结构有着重要的帮助。 首先,"数据结构大作业.docx"很可能是学生完成的一份大型编程项目,可能涵盖了...
在这个“数据结构大作业贪吃蛇和实验报告”中,我们可以深入探讨两个主要方面:C语言实现的贪吃蛇游戏以及相关实验报告。贪吃蛇游戏是经典的编程练习,它涉及到了一系列的数据结构和算法知识。 首先,让我们来分析...
《数据结构大作业(C语言)实验报告_飞机订票系统》是针对计算机科学与技术专业学生的一份重要的学习资料,它结合了数据结构和C语言的知识,通过设计和实现一个飞机订票系统来深入理解和应用这些理论。在这个系统中,...
总的来说,这个"C语言数据结构实验合集"是一个宝贵的教育资源,对于想要深入理解和掌握数据结构的C程序员来说,它提供了一条实践和探索的道路。通过这些实验,你可以亲手构建和操作数据结构,从而更好地理解和运用...
本实验报告的主要内容是对栈和队列的应用算法的实现。实验的目的是掌握栈的初始化、结构特性、入栈、出栈操作和判空操作,并学会栈的灵活运用。 实验报告的主要部分包括实验目的、实验内容、实验步骤和实现代码。...
实验作业可能涵盖了各种基本的数据结构类型,如数组、链表、栈、队列、树和图等。这些数据结构各有其特点和用途: 1. **数组**:是最基础的数据结构,它提供了一种有序的元素集合。在C语言中,数组是一段连续的内存...
本实验主要是锻炼C语言编程能力,需要能够熟练地完成各种编程任务,尤其是在课程的后期作业中。该实验检测以下技能: * C语言中要求的显式内存管理 * 创建和操作基于指针的数据结构 * 实现输入无效参数也能正确运行...
linux程序实验报告,数据结构(红黑树、堆、栈、二叉搜索树、队列、链表、图)的c代码实现+源代码+文档说明+实验报告 - 小白不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的课程设计,代码都测试...
C语言中,我们可以通过数组或链表实现栈和队列。 3. **树**:树是一种非线性数据结构,每个元素称为节点,包含一个或多个子节点。二叉树是最常见的类型,每个节点最多有两个子节点。二叉搜索树(BST)是一种特殊的...