把我的作业贴出来
实验一 线性表
一、实验目的
1.熟悉线性表的顺序和链式存储结构
2.掌握线性表的基本运算
3.能够利用线性表的基本运算完成线性表应用的运算
二、实验目的
1.设有一个线性表E={e1, e2, … , en-1, en},设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E'={ en , en-1 , … , e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。(文件夹:习题9_3)
2.已知由不具有头结点的单链表表示的线性表中,含有三类字符的数据元素(字母、数字和其他字符),试编写算法构造三个以循环链表表示的线性表,使每个表中只含有同一类的字符,且利用原表中的结点空间,头结点可另辟空间。(文件夹:习题9_12)
第一题
/*顺序表的结构类型定义.h*/
typedef char datatype;
/*const int maxsize=1024;*/
#define maxsize 1024
typedef struct
{ datatype data[maxsize];
int last;
}sequenlist;
#include <stdio.h>
#include <stdlib.h>
#include <stdafx.h>
#include"顺序表结构类型定义.h"
int main()
{
sequenlist*L;
L=creat(L);
puts("原字符串:/n");
print(L);
invert(L);/*调用顺序表逆值的函数*/
puts("逆置后的字符串:/n");
print(L);
system("PAUSE");
}
/*输出顺序表.H*/
#include <stdio.h>
#include <stdlib.h>
#include <stdafx.h>
#include"顺序表结构类型定义.h"
void print(sequenlist*L)
{
int i;
for(i=0;i<L->last;i++)
/*cout<<L->data[i]<<" ";
cout<<endl;*/
printf("%c ",L->data[i]);
puts("/n");
return;
}
/*建立顺序表.H*/
#include"顺序表结构类型定义.h"
#include <conio.h>
#include <stdafx.h>
sequenlist* creat(sequenlist*L)
{
char ch;
L=(sequenlist*)malloc(sizeof(sequenlist));
L->last=0;
puts("请输入一字符串(输入“*”结束):/n");
while((ch=getchar())!='*')
{
L->data[L->last]=ch;
L->last++;
}
return L;
}
/*该程序不能忽略回车符,在 * 前有回车的话,也会在相应位置处输出一个回车*/
//第二题
/*单链表结构类型定义.h*/
typedef char datatype;
typedef struct node
{
datatype data;
struct node *next;
}linklist;
/*单链表逆置主文件.cpp*/
#include <stdafx.h>
#include <stdio.h>
#include <stdlib.h>
#include"单链表结构类型定义.h"
int main()
{
linklist*head;
head=creat(head);/*原来用C++写的函数是采用引用的方式来传递值的,C不支持,增加了返回值*/
puts("您输入的字符串是:");
print(head);
invert(head);/*调用单链表逆置的函数*/
puts("逆置后的字符串是:");
print(head);
getch();
return 1;
}
/*建立单链表.h*/
#include <stdio.h>
#include <stdlib.h>
#include <stdafx.h>
#include"单链表结构类型定义.h"
linklist* creat(linklist*head)
/*采用尾插法建立具有头结点的单链表*/
{
char ch;
linklist *s,*r;
head=(linklist*)malloc(sizeof(linklist));
r=head;
puts("请输入字符串(输入“*”结束):");
while((ch=getchar())!='*')
{
s=(linklist*)malloc(sizeof(linklist));
s->data=ch;
r->next=s;
r=s;
}
r->next=NULL;
return head;
}
/*输出单链表.h*/
#include <stdio.h>
#include <stdlib.h>
#include <stdafx.h>
#include"单链表结构类型定义.h"
void print(linklist *head)
{
linklist*p=head->next;
while(p!=NULL)
{
/*cout<<p->data<<" ";*/
printf("%c ",p->data);
p=p->next;
}
/*cout<<endl;*/
puts("/n");
}
/*单链表逆置*/
#include <stdafx.h>
#include <stdio.h>
#include <stdlib.h>
#include"单链表结构类型定义.h"
void invert(linklist*head)
{
linklist*p,*q;
p=head->next;
head->next=NULL;
while(p)
{
q=p;
p=p->next;
q->next=head->next;
head->next=q;
}
return;
}
/*
void invert(linklist*head)
{
linklist*p,*q,*r;
p=head->next;
q=p->next;
while(q!=NULL)
{
r=q->next;
q->next=p;
p=q;
q=r;
}
head->next->next=NULL;
head->next=p;
}*/
分享到:
相关推荐
本书《数据结构实验与习题——线性表栈和队列串数组树与二叉树》旨在帮助学生更好地理解和实践这些概念。 首先,书中介绍了C语言基础知识,这是实现数据结构的基础。C语言的基本输入输出、函数及其参数传递、以及...
### 数据结构(C语言版) 实验报告知识点梳理 #### 一、实验背景及目标 - **实验背景**:本实验报告是针对青岛大学信息工程学院计算机科学与技术、软件工程专业的学生进行的一项实践教学活动。旨在通过实际操作加深...
数据结构作业实验报告 本实验报告的主要内容是关于顺序表基本操作的实现,包括插入、删除、查找、合并等操作。实验的主要目的是掌握用 Visual Studio 2010 上机调试线性表的基本方法,并掌握线性表的基本操作。 一...
总的来说,这个"C语言数据结构实验合集"是一个宝贵的教育资源,对于想要深入理解和掌握数据结构的C程序员来说,它提供了一条实践和探索的道路。通过这些实验,你可以亲手构建和操作数据结构,从而更好地理解和运用...
本次实验是数据结构课程的一部分,主要关注线性表的链式存储结构以及相关操作。实验目标在于让参与者深入理解顺序表的基本特性,包括如何声明和操作线性表,以及如何进行链表的创建、遍历、删除等操作。实验的具体...
"软件工程大作业" ...本实验总结了软件工程大作业的实验一,涵盖了线性表的顺序和链式存储结构,以及顺序表和单链表逆置算法的实现。通过本实验,学生可以熟悉线性表的基本概念和操作,并掌握线性表的基本运算。
《数据结构》实验内容广泛,涵盖线性表操作、栈的使用、字符串处理、排序算法、十字链表的矩阵运算、二叉树操作、查找技术以及图的操作等多个领域,每一部分都旨在锻炼学生的不同技能,如数据组织、算法优化、复杂...
- 使用VS2008和C语言编写的实验程序位于`homework2\search_bin.c`,可执行文件为`homework2\Debug\homework2.exe`。 ### 总结 通过对上海交通大学数据结构课程中的实验作业分析,我们深入理解了顺序表的特性和...
实验报告的主题是“数据结构”的一个实践环节,具体是关于线性表的链式存储结构。实验的主要目标是让学生掌握线性表链式存储的基本概念和操作,以及深入理解顺序表的特点。实验的要求包括创建一个评委打分的单向链表...
线性表是一种一维数组,其中元素按照特定顺序排列。实验的目的是帮助学生理解和掌握线性表的关键概念,包括元素的前驱和后续,以及如何在这些数据结构中执行基本操作。 实验一的目的是: 1. 理解线性表中元素的...
实验2:线性表 1) 顺序表的合并:实现书中P26中算法2.7,La=1 2 3 4 5, Lb=2 4 6 8 10。要求得到合并后的Lc=1 2 3 4 5 6 8 10 注(algo2-4 ) 2) 一元多项式加法:Pa=Pa+Pb,并销毁一元多项式Pb 3) 一元多项式...
该实验是针对大学计算机科学专业学生在学习《数据结构》课程时进行的一项实践性作业。实验的主要目的是帮助学生深入理解顺序表这一基本数据结构,并掌握其在C语言中的实现方法。通过实验,学生将学会顺序表的定义、...
栈是一种特殊的线性表,它只允许在一端进行插入和删除操作,这一端称为栈顶。与一般的线性表相比,栈的操作特性有所不同。线性表允许在任意位置进行插入和删除,而栈只能在栈顶进行这些操作。这意味着,最后一个进入...
在本实验中,我们探讨了如何在C语言环境下实现循环队列,这是一种在顺序存储结构上进行操作的数据结构。循环队列具有"先进先出"(FIFO)的特性,适用于处理一系列需要按顺序处理的任务,例如作业调度。实验的目标是...
总的来说,《数据结构实验与习题》这本书提供了一个全面的实践和理论结合的学习平台,它不仅强化了C语言基础,还通过丰富的实验和习题提升了学生在数据结构领域的实际操作能力和问题解决能力。书中的部分答案可以...
【循环队列】是计算机科学中一种特殊的数据结构,它是一种线性表,具有“先进先出”(FIFO)的特性。循环队列的主要特点是利用数组的循环特性,使得队列的末尾可以连接到队列的开头,形成一个闭合的循环,从而解决了...
### 数据库实验题库知识点解析 #### 第一章 概论 ##### 一、选择题解析 1. **研究数据结构的目的**: - **选项分析**:此题考察学生对于数据结构研究目的的理解。 - A. 数据的逻辑结构:仅涉及数据之间逻辑上的...
本教程以C语言为编程基础,旨在帮助学生理解和掌握数据结构的基本概念,特别是线性表和栈队列的应用。 线性表是数据结构中最基础的数据结构之一,它是由n个相同类型元素构成的有限序列。在这个实验中,学生需要掌握...