资源描述
学 号 09710213
数据结构课程设计
设计说明书
文章编辑
起止日期: 2011年 1月 4 日 至 2011 年 1月7日
学生姓名
张颜南
班级
09计算机2班
成绩
指导教师(签字)
邢振祥
电子与信息工程系
2011年 1 月 7 日
天津城市建设学院
课程设计任务书
2010—2011学年第1学期
电子与信息工程 系 计算机 专业 09级2 班级
课程设计名称: 数据结构课程设计
设计题目: 文章编辑
完成期限:自 2011 年 1 月 4 日至 2011 年 1 月 7 日共 1 周
设计依据、要求及主要内容(可另加附页):
一、设计目的
熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。
二、设计要求
(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;
(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;
(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;
(4)认真编写课程设计报告。
三、设计内容
二叉树
四、参考文献
1.王红梅.数据结构.清华大学出版社
2.王红梅.数据结构学习辅导与实验指导.清华大学出版社
3.严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社
//LinkList.h 声明类LinkList
#ifndef LinkList_H
#define LinkList_H
template <class T>
struct Node
{
T data;
Node<T> *next; //此处<T>也可以省略
};
template <class T>
class LinkList
{
public:
LinkList( ); //建立只有头结点的空链表
LinkList(T a[ ], int n); //建立有n个元素的单链表
~LinkList(); //析构函数
void PrintList( ); //遍历单链表,按序号依次输出各元素
Node<T> * Locate(T x); //查找值为x的元素,并返回地址
int Length(); //求单链表长度
void Reverse(); //单链表逆置
private:
Node<T> *first; //单链表的头指针
};
#endif
//LinkList.cpp
#include "LinkList.h"
/*
*前置条件:单链表不存在
*输 入:无
*功 能:构建一个单链表
*输 出:无
*后置条件:构建一个单链表
*/
template <class T>
LinkList<T>:: LinkList( )
{
first=new Node<T>; first->next=NULL;
}
/*
*前置条件:单链表不存在
*输 入:顺序表信息的数组形式a[],单链表长度n
*功 能:将数组a[]中元素建为长度为n的单链表
*输 出:无
*后置条件:构建一个单链表
*/
template <class T>
LinkList<T>:: LinkList(T a[ ], int n)
{
first=new Node<T>; //生成头结点
Node<T> *r,*s;
r=first; //尾指针初始化
for (int i=0; i<n; i++)
{
s=new Node<T>; s->data=a[i]; //为每个数组元素建立一个结点
r->next=s; r=s; //插入到终端结点之后
}
r->next=NULL; //单链表建立完毕,将终端结点的指针域置空
}
/*
*前置条件:无
*输 入:无
*功 能:无
*输 出:无
*后置条件:无
*/
template <class T>
LinkList<T>:: ~LinkList()
{
}
/*
*前置条件:单链表存在
*输 入:无
*功 能:单链表遍历
*输 出:输出所有元素
*后置条件:单链表不变
*/
template <class T>
void LinkList<T>::PrintList( )
{
Node<T> *p;
p=first->next;
while (p)
{
cout<<p->data<<endl;
p=p->next;
}
}
/*
*前置条件:单链表存在
*输 入:无
*功 能:求单链表的长度
*输 出:输出单链表的长度
*后置条件:单链表不变
*/
template <class T>
int LinkList<T>::Length( )
{
}
/*
*前置条件:单链表存在
*输 入:无
*功 能:单链表逆置
*输 出:无
*后置条件:单链表顺序逆置
*/
template <class T>
void LinkList<T>::Reverse( )
{
}
/*
*前置条件:单链表存在
*输 入:值 x
*功 能:查找值为x的元素
*输 出:如果查找成功,输出元素的位置,否则输出空
*后置条件:单链表不变
*/
template <class T>
Node<T> * LinkList<T>::Locate(T x)
{
}
//LinkListMain.cpp
#include <iostream.h> //引用输入输出流库函数的头文件
#include "LinkList.cpp" //引用单链表的类
void main( )
{
int r[100],n,i,x;
cout<<"请输入线性表中元素的个数!"<<endl;
cin>>n;
cout<<"请输入线性表中每个元素!"<<endl;
for(i=0;i<n;i++)
{cout<<"请输入第"<<i+1<<"个元素!"<<endl;
cin>>r[i];
}
LinkList<int> b(r,n); //根据数组创建单链表
cout<<"单链表b为:"<<endl;
b.PrintList(); //输出单链表所有元素
char s='9';
while(s!='0')
{
cout<<"1.逆置\n"<<endl;
cout<<"2.打印\n"<<endl;
cout<<"3.求长度\n"<<endl;
cout<<"4.查找\n"<<endl;
cout<<"0......退出\n"<<endl;
cin>>s;
switch(s)
{
case '1':
b.Reverse();
break;
case '2':
cout<<"单链表b为:"<<endl;
b.PrintList(); //输出单链表所有元素
break;
case '3':
cout<<"单链表b的长度为:"<< b.Length()<<endl; //输出单链表的长度
break;
case '4':
cout<<"请输入待查找的元素值:"<<endl;
cin>>x;
if (!b.Locate(x))
cout<<"无此元素";
else
cout<<"查找成功:"<<endl;
break;
}
}
}
8
1
展开阅读全文