南华大学计算机学院吴取劲,南华大学计算机科学与技术学院试验报告20062007学年第一.DOC...

南华大学

计算机科学与技术学院

实 验 报 告

( 2006 ~2007学年度 第一学期 )

课程名称

数据结构

实验名称

链表的创建和逆置

姓名

朱彦萍

学号

20054940104

专业

信息管理与信息系统

班级

051班

地点

经管机房

教师

吴取劲

1.实验目的及要求

实验目的:

通过对单链表的操作的实验,了解单链表的存储结构和操作方法,单链表是一种链式存储结构,使用一组任意的存储单元存储线性表中的元素,掌握链表的逆置,用指针进行操作。

(2)实验要求:

学习单链表的构建和处理

应用C语言对单链表实行逆置

(3) 硬件环境:

一台计算机

软件:

操作系统windowXP

Turbo C 2.0

2.实验步骤

(1)明确实验目的,确定实验内容。

(2)根据实验要求书写算法,画出程序流程图。

(3)根据算法书写程序,用C语言实现算法。

(4)上机调试程序,运行并测试程序。

(5)实验总结

(6)写出试验报告

3. 实验内容

(1)内容描述

链表是线性表的链式存储结构,它由结点组成,结点包括两个域,其中存储数据元素的域称为数据域;存储直接后继存储位置的域称为指针域.整个链的存取必须从头指针开始

本实验就是利用指针来运行的,先为链表分派存储空间,然后初始化链表的头指针,从链表的头指针开始,将链表的值依次赋值给另一个指针,原链表的最后一个结点为另一个链表的头指针,然后从头指针开始返回新链表的值,并打印输出。

(2)实验流程图:

主函数

主函数

输入结点数;

输入结点值

调用create产生一个链表

判断是否为空

为空

非空

p=head->next;

head->next=NULL

return head

非空

q=p;p=p->next;

q->next=head;

head=q;

判断P是否为空

为空

输出原来的链表和逆置后的链表

结束

调用turnback 函数new=turnback(old)

(3) 算法描述

算法思想:

通过指针的应用实现链表的逆置

算法描述:

#include "stdio.h"

单链表的类型定义如下:

typedef struct list //单链表类型定义

{ int no;

struct list *next;

}plist;

函数create定义如下:

plist *create(int n) //新建一个单链表

{ plist *p,*q,*h;

int i,x;

for(i=1;i<=n;i++)

{p=(plist *)malloc(sizeof(plist));

scanf("%d",&p->no);

if (i==1) h=p;

else q->next=p;

q=p;

}

p->next=NULL;

return h;

}

函数turnback的定义如下:

plist *turnback(head) //链表的逆置函数

plist *head;

{ plist *p,*q;

p=head->next;

head->next=NULL;

while(p!=NULL);

{ q=p;p=p->next;

q->next=head;

head=q;

}

return head;

}

函数out的定义如下:

out(p) //链表的输出函数

plist *p;

{ while(p->next!=NULL)

{printf("%d->",p->no);

p=p->next;

}

printf("%d\n",p->no);

}

(4)C语言程序:

#include "stdio.h"

typedef struct list //类型定义

{ int no; //链表的数据域为整型

struct list *next; //定义链表指针

}plist;

plist *create(int n) //新建链表函数

{ plist *p,*q,*h; //初始化指针

int i,x;

for(i=1;i<=n;i++)

{p=(plist *)malloc(sizeof(plist)); //为元素分配内存空间

scanf("%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值