0016单链表的完整功能及单链表翻转
2015-11-06 16:14
363 查看
首先是单链表节点的类,在命名为OnelinkNode.h的头文件里:
再在另一个新的头文件Onelink.h中写以下代码:
Onelink类中的功能函数的实现,在资源文件中新添加一个cpp文件,加入以下代码:
资源文件中的主函数里,我们用一个单链表翻转操作来部分检验以上所做的工作是否正确:
希望对初学者有帮助。2015年11月6日,西大楼。
#ifndef OnelinkNode_H_ #define OnelinkNode_H_ class OnelinkNode { public: int data; OnelinkNode* next; OnelinkNode(int k=0,OnelinkNode*nextNode=NULL) { data = k; next = NULL; } ~OnelinkNode() {} }; #endif//OnelinkNode_H_
再在另一个新的头文件Onelink.h中写以下代码:
#ifndef Onelink_H_ #define Onelink_H_ class Onelink { public: OnelinkNode* head; Onelink(int n=0); ~Onelink(); bool isEmpty()const { return head==NULL; } bool isFull()const { return false; //总是不满 } int length()const; OnelinkNode* index(int i)const;//定位第i个节点 int get(int i)const;//获得第i个节点 bool set(int i,int k);//设置第i个节点的数据域 OnelinkNode* insert(OnelinkNode* p,int k);//将k插入到第 bool remove(OnelinkNode* p); void output(OnelinkNode* p)const; void output()const; }; #endif//Onelink_H_
Onelink类中的功能函数的实现,在资源文件中新添加一个cpp文件,加入以下代码:
//本文档实现单链表类中的功能函数 #include <iostream> #include"OnelinkNode.h" #include "Onelink.h" using namespace std; //用构造函数来创建一个单链表 Onelink::Onelink(int n) { head=NULL; if(n>0) { int i=1; OnelinkNode *rear,*q; head = new OnelinkNode(i++); rear = head; while(i<=n) { q = new OnelinkNode(i++); rear->next = q; rear = q; } } } //用析构函数来撤销单链表 Onelink::~Onelink() { OnelinkNode *p = head,*q; while(p!=NULL) { q = p; p = p->next; delete q; } head = NULL; } //返回单链表的长度 int Onelink::length()const { int i=0; OnelinkNode *p = head; while(p!=NULL) { i++; p=p->next; } return i; } //定位,返回的是一个节点指针 OnelinkNode* Onelink::index(int i)const { if(i<=0)return NULL; int j=0; OnelinkNode* p=head; while(p!=NULL&&j<i) { j++; p=p->next; } return p; } //设置单链表第i个节点的数据域数值 bool Onelink::set(int i,int k) { OnelinkNode* p=index(i); //先定位 if (p!=NULL) { p->data=k; return true; } else return false; } //输出打印单链表,分两步,一部输出普通的节点,一步输出head为指针的单链表 void Onelink::output(OnelinkNode *p)const { while(p!=NULL) { cout<<p->data<<" "; p = p->next; } cout<<"\n"; } //输出head指针指向的数据 void Onelink::output()const { cout<<"Onelink: "; output(head); }
资源文件中的主函数里,我们用一个单链表翻转操作来部分检验以上所做的工作是否正确:
#include<iostream> using namespace std; #include "OnelinkNode.h" #include "Onelink.h" void reverse(Onelink &h) { OnelinkNode *p=h.head,*q,*front=NULL; while(p!=NULL) { q=p->next; p->next=front; front = p; p = q; } h.head=front; } void main(void) { Onelink h(5); h.output(); //输出单链表 reverse(h); cout<<"Reverse: \n"; h.output(); }结果:
希望对初学者有帮助。2015年11月6日,西大楼。
相关文章推荐
- Java设计模式----状态模式(State)
- Java设计模式----状态模式(State)
- Leap Motion自带Sample之详解_Win/C++版本
- 利用注解,自动生成建表语句&转换查询结果
- 常用maven jar 依赖
- AndroidStudio下加入百度地图的使用(四)——路线规划
- 自定义TabBarController 字体方法
- 修改WSAD的默认工作区(转)
- JSP,Servlet,JSF 的区别
- android 之输入法
- Replacement for deprecated sizeWithFont: in iOS 7?
- 语义化版本
- [LeetCode] Move Zeroes
- android第一个空白的项目
- file命令
- PrintStream打印流
- Linux学习笔记之学习网站
- 将Emacs打造成阅读源代码的神器
- nginx url转发的一种方式
- 中国2015新互联网公司300强系列