顺序表单链表树图代码.docx
- 文档编号:5917094
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:25
- 大小:19.43KB
顺序表单链表树图代码.docx
《顺序表单链表树图代码.docx》由会员分享,可在线阅读,更多相关《顺序表单链表树图代码.docx(25页珍藏版)》请在冰豆网上搜索。
顺序表单链表树图代码
成绩
课程设计报告
课程名称:
数据结构
设计题目:
顺序表单链表树图
专业名称:
计算机科学与技术
学生姓名:
学号:
指导教师:
年月日
一课程设计内容与要求
内容:
一顺序表
二单链表
三树
四图
二要求:
每个小组对以上4道题进行编程。
三开发环境
VC++6.0
四小组成员分工
各自编程,最后讨论,优化,择优而用。
五代码:
1.顺序表
#include
usingnamespacestd;
#include
constintmaxsize=100;
structXinXi
{
intBianHao;
charname[15];
charLike[10];
charAdress[8];
};
template
classSeqList
{
public:
SeqList(){Length=0;}
SeqList(XXa[],intn);
~SeqList(){}
intLength(){returnlength;}
XXGet(inti);
intLocate(XXx);
voidInsert(inti,XXx);
XXDelete(inti);
voidPrintList();
private:
XXdata[maxsize];
intlength;
};
//顺序表有参构造函数
template
SeqList
:
SeqList(XXa[],intn)
{
if(n>maxsize)throw"参数非法";
for(inti=0;i data[i]=a[i]; length=n; } //按位查找 template XXSeqList : Get(inti) { if(i<1&&i>length)throw"查找位置非法"; elsereturndata[i-1]; } //按值查找 template intSeqList : Locate(XXx) { inti; for(i=0;i if(data[i].BianHao==x.BianHao) returni+1; return0; } //插入算法 template voidSeqList : Insert(inti,XXx) { intj; if(length>=maxsize)throw"上溢"; if(i<1||i>length+1)throw"位置"; for(j=length;j>=i;j--) data[j]=data[j-1]; data[i-1]=x; length++; } //删除算法 template XXSeqList : Delete(inti) { intj; XXx; if(length==0)throw"下溢"; if(i<1||i>length)throw"位置"; x=data[i-1]; for(j=i;j data[j-1]=data[j]; length--; returnx; } //输出函数 template voidSeqList : PrintList() { for(inti=0;i cout< < cout< } intmain() { XinXiX[5]={{1001,"wangxin","Game","402"}, {1002,"zhaohuang","Food","524"}, {1003,"liuxing","Create","112"}, {1004,"huge","Film","119"}, {1005,"qiyue","Book","110"}}; inti,j,k; SeqList cout<<"请选择功能: "< cout<<"1输出列表"< cout<<"2删除元素"< cout<<"3插入元素"< cout<<"4按位查找"< cout<<"5按值查找"< do { cin>>i; switch(i) { case1: cout<<"编号姓名爱好地址"< array.PrintList(); break; case2: cout<<"请输入删除位置: "< cin>>j; cout<<"编号姓名爱好地址"< array.Delete(j); array.PrintList(); break; case3: cout<<"请输入要插入的信息: "< XinXia; cin>>a.BianHao>>a.name>>a.Like>>a.Adress; cout<<"请输入插入位置"< cin>>j; array.Insert(j,a); array.PrintList(); break; case4: XinXitemp; cout<<"请输入欲查找位置: "< cin>>k; cout<<"查找内容如下: "< temp=array.Get(k); cout< case5: XinXix; XinXib; cout<<"请输入所查找信息的编号: "< cin>>x.BianHao; cout<<"所在位置为"< cout< b=array.Get(array.Locate(x)); cout< } }while(i>0); return0; } 2.单链表 #include #include usingnamespacestd; structXinXi { intBianHao; charname[15]; charLike[10]; charAdress[8]; }; template structNode { XinXidata; Node Node }; template classLinkList { private: Node public: LinkList(); LinkList(DataTypea[],intn); ~LinkList(); intLength(); DataTypeGet(inti); intLocate(DataTypex); voidInsert(inti,DataTypex); DataTypeDelete(inti); voidPrintList(); }; //单链表输出算法 template voidLinkList : PrintList() { Node p=first->next; while(p! =NULL) { cout< < p=p->next; } } //求线性表长 template intLinkList : Length() { Node intcount=0; while(p! =NULL) { p=p->next; count++; } returncount; } //线性表按位查找 template DataTypeLinkList : Get(inti) { Node p=first->next; intcount=1; while(p! =NULL&&count { p=p->next; count++; } if(p==0)throw"位置"; elsereturnp->data; } //线性表按值查找 template intLinkList : Locate(DataTypex) { Node p=first->next; intcount=1; while(p! =NULL) { if(p->data.BianHao==x.BianHao) returncount; p=p->next; count++; } return0; } //单链表插入算法 template voidLinkList : Insert(inti,DataTypex) { Node Node p=first; intcount=0; while(p! =NULL&&count { p=p->first; count++; } if(p==NULL)throw"位置"; else { s=newNode s->data=x; s->next=p->next; p->next=s; } } //无参构造函数 template LinkList : LinkList() { first=newNode first->next=NULL; } //头插法建立单链表 template LinkList : LinkList(DataTypea[],intn) { Node first=newNode first->next=NULL; for(inti=0;i { s=newNode s->data=a[i]; s->next=first->next; first->next=s; } }//头插法与尾插法只能选择其一,且头插法为倒序,尾插法为正序。 //尾插法建立单链表 /*template LinkList : LinkList(DataTypea[],intn) { Node Node first=newNode r=first; for(inti=0;i { s=newNode s->data=a[i]; r->next=s; r=s; } r->next=NULL; }*/ //单链表删除算法 template DataTypeLinkList : Delete(inti) { Node Node XinXix; p=first; intcount=0; while(p! =NULL&&count { p=p->next; count++; } if(p==NULL||p->next==NULL) throw"位置"; else { q=p->next; x=q->data; p->next=q->next; deleteq; returnx; } } //单链表析构函数 template LinkList : ~LinkList() { Node Node while(first! =NULL) { q=first; first=first->next; deleteq; } } intmain() { XinXiX[5]={{1001,"wangxin","Game","402"}, {1002,"zhaohuang","Food","524"}, {1003,"liuxing","Create","112"}, {1004,"huge","Film","119"}, {1005,"qiyue","Book","110"}}; inti,j,k; LinkList cout<<"请选择功能: "< cout<<"1输出列表"< cout<<"2删除元素"< cout<<"3插入元素"< cout<<"4按位查找"< cout<<"5按值查找"< cout<<"6求其表长"< do { cin>>i; switch(i) { case1: cout<<"编号姓名爱好地址"< array.PrintList(); break; case2: cout<<"请输入删除位置: "< cin>>j; cout<<"编号姓名爱好地址"< array.Delete(j); array.PrintList(); break; case3: cout<<"请输入要插入的信息: "< XinXia; cin>>a.BianHao>>a.name>>a.Like>>a.Adress; cout<<"请输入插入位置"< cin>>j; array.Insert(j,a); array.PrintList(); break; case4: XinXitemp; cout<<"请输入欲查找位置: "< cin>>k; cout<<"查找内容如下: "< temp=array.Get(k); cout< break; case5: XinXix; XinXib; cout<<"请输入所查找信息的编号: "< cin>>x.BianHao; cout<<"所在位置为"< cout< b=array.Get(array.Locate(x)); cout< break; case6: cout< } }while(i>0); return0; } 3.树 #include usingnamespacestd; template structBiNode { Tdata; BiNode }; template classBiTree { public: BiTree(); ~BiTree(); voidPreOrder(BiNode voidInOrder(BiNode voidPostOrder(BiNode voidLeverOrder(); private: BiNode BiNode voidRelease(BiNode }; template BiTree : BiTree() { BiNode root=Creat(root); } //建立二叉链表 template BiNode : Creat(BiNode { charch; cin>>ch; if(ch=='#') root=NULL; else { root=newBiNode root->data=ch; root->lchild=Creat(root->lchild); root->rchild=Creat(root->rchild); } returnroot; } //二叉树前序遍历 template voidBiTree : PreOrder(BiNode { if(root==NULL)return; else{ cout< PreOrder(root->lchild); PreOrder(root->rchild); } cout< } //二叉树中序遍历 template voidBiTree : InOrder(BiNode { if(root==NULL) return; else{ InOrder(root->lchild); cout< InOrder(root->rchild); } } //二叉树后序遍历 template voidBiTree : PostOrder(BiNode { if(root==NULL)return; else{ PostOrder(root->lchild); PostOrder(root->rchild); cout< } } //二叉树层序遍历 template voidBiTree : LeverOrder() { intfront,rear; BiNode BiNode BiNode front=rear=-1; if(root==NULL)return; Q[++rear]=root; while(front! =rear) { q=Q[++front]; cout< if(q->lchild! =NULL) Q[++rear]=q->lchild; if(q->rchild! =NULL) Q[++rear]=q->rchild; } } //析构函数 template BiTree : ~BiTree() { Release(root); } template voidBiTree : Release(BiNode { if(root! =NULL) { Release(root->lchild); Release(root->rchild); deleteroot; } } intmain() { BiTree BiNode cout<<"请选择功能: "< cout<<"1前序遍历"< cout<<"2中序遍历"< cout<<"3后序遍历"< cout<<"4层序遍历"< inti; do { cin>>i; switch(i)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 顺序 表单 链表树图 代码