数据结构实验答案

更新时间:2023-10-28 20:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

重庆文理学院软件工程学院

实 验 报 告 册

专 业:_____软件工程__ _ 班 级:_____软件工程2班__ _ 学 号:_____201258014054 ___ 姓 名:_____周贵宇___________ 课程名称:___ 数据结构 _ 指导教师:_____胡章平__________

2013年 06 月 25 日

实验序号 1 实验名称 实验一 线性表基本操作 实验地点

实 验 内 容

S-C1303 实验日期 2013年 04月 22日

1. 编程实现在顺序存储的有序表中插入一个元素(数据类型为整型)。

2. 编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。 3. 编程序实现将单链表的数据逆置,即将原表的数据(a1,a2….an)变成

(an,…..a2,a1)。(单链表的数据域数据类型为一结构体,包括学生的部分信息:学号,姓名,年龄)

1.

#include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0

#define ElemType int

#define MAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/ typedef struct

{ ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/

int last; /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/ }SeqList;

#include \#include \

void px(SeqList *A,int j); void main() { SeqList *l; int p,q,r; int i;

l=(SeqList*)malloc(sizeof(SeqList)); printf(\请输入线性表的长度:\ scanf(\ l->last = r-1;

printf(\请输入线性表的各元素值:\\n\ for(i=0; i<=l->last; i++) {

scanf(\ }

px(l,i);

printf(\请输入要插入的值:\\n\ scanf(\

实 验 过 程 及 步 骤

}

void px(SeqList *A,int j) { int i,temp,k; for(i=0;i

{ for(k=0;k

{if(A->elem[i]elem[k]) {temp=A->elem[i];

A->elem[i]=A->elem[k]; A->elem[k]=temp; }} } } 2.

#include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0

#define ElemType int

#define MAXSIZE 100 /*此处的宏定义常量表示线性表可能达到的最大长度*/ typedef struct

{ ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/

int last; /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/ }SeqList;

#include \#include \

void px(SeqList *A,int j);

int DelList(SeqList *L,int i,SeqList *e,int j)

/*在顺序表L中删除第i个数据元素,并用指针参数e返回其值。i的合法取值为1≤i≤L.last+1 */ { int k,a,b,c;

if((i<1)||(i>L->last+2))

{ printf(\删除位置不合法!\

i++; px(l,i); l->last++;

for(i=0; i<=l->last; i++)

{ printf(\}

printf(\

return(ERROR); }

if(j>L->last-i)

{ printf(\删除位置不合法!\ return(ERROR); }

for(b=0,a=i-1;aelem[b]=L->elem[a];}

e->last=b; /* 将删除的元素存放到e所指向的变量中*/ for(k=i;k+j-1<=L->last;k++)

{ L->elem[k-1]=L->elem[k+j-1]; }/*将后面的元素依次前移*/

L->last=L->last-j;

printf(\删除的元素值为:\ for(c=0;c

{ printf(\ printf(\ return(OK); }

void main()

{ SeqList *l,*q; int p,r; int i,j,m;

l = (SeqList*)malloc(sizeof(SeqList)); q = (SeqList*)malloc(sizeof(SeqList)); printf(\请输入线性表的长度:\ scanf(\ l->last = r-1;

printf(\请输入线性表的各元素值:\\n\ for(i=0; i<=l->last; i++)

{ scanf(\ }

px(l,i);

for(i=0;i<=r-1;i++)

{printf(\ printf(\

printf(\请输入要删除的元素位置(位置+个数):\\n\ scanf(\ m=DelList(l,p,q,j); if(m==0)

{printf(\无法删除\ exit(0);} else if(m==1)

{ printf(\线性表内余下元素为:\\n\

for(i=0;i<=r-j-1;i++)

{printf(\ printf(\ }

void px(SeqList *A,int j) { int i,temp,k; for(i=0;i

{ for(k=0;k

{if(A->elem[i]elem[k]) {temp=A->elem[i];

A->elem[i]=A->elem[k]; A->elem[k]=temp; }} }

printf(\排序完成!\}

3. #include #include #include

/*#define ElemType char*/

typedef struct Node /*结点类型定义*/ { int num; char name[10]; int age;

struct Node * next;

}Node, *LinkList; /* LinkList为结构指针类型*/ LinkList CreateFromTail()

/*通过键盘输入表中元素值,利用尾插法建单链表,并返回该单链表头指针L*/

{ LinkList L; Node *r, *s; int a;

char b[10]; int c;

int flag =1; /*设置一个标志,初值为1,当输入\时,flag为0,建表结束*/

L=(Node * )malloc(sizeof(Node));

L->next=NULL; /*为头结点分配存储空间,建立空的单链表L*/

r=L; /*r指针动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/

/*循环输入表中元素值,将建立新结点s插入表尾*/ printf(\输入学生的信息:\\n\ printf(\学号 姓名 年龄\\n\

本文来源:https://www.bwwdw.com/article/e442.html

Top