简单数据结构之循环链表(C++实现)
来源:互联网 发布:淘宝页面链接怎么设置 编辑:程序博客网 时间:2024/05/18 04:51
/* ============================================================================ Name : Circular link.cpp Author : ntsk13 beijiwei@qq.com Version : Copyright : GPL Description : circular Link list study, complement by C++ Date : 2015.06.16 ============================================================================ */#include <iostream>using namespace std;typedef struct {int data;}Elem_t;typedef struct lnode{Elem_t e;struct lnode * next;}node,*pnode;class Link{public:void init(pnode & L);void clear(pnode & L);int get_length(pnode &L);Elem_t get_elem(pnode &L,int i);void traverse(pnode &L);void insert(pnode &L,Elem_t e,int i);void delete_elem(pnode &L,int i);};int main(void) {pnode H=NULL;//head pElem_t zero,one,two,three,four,five;zero.data=0;one.data=1;two.data=2;three.data=3;four.data=4;Link list;list.init(H);list.insert(H,zero,0);list.insert(H,one,1);list.insert(H,two,2);list.insert(H,three,3);list.insert(H,four,4);list.traverse(H);cout<<"len is "<<list.get_length(H)<<endl;five=list.get_elem(H,4);cout<<"================================="<<endl;cout<<"five is "<<five.data<<endl;list.delete_elem(H,4);cout<<"================================="<<endl;list.traverse(H);cout<<"len is "<<list.get_length(H)<<endl;list.insert(H,two,0);list.insert(H,five,2);cout<<"================================="<<endl;list.traverse(H);cout<<"len is "<<list.get_length(H)<<endl;return 0;}void Link::init(pnode & L){L=new node;//构造一个头结点(L->e).data =0;//头结点的data作为长度L->next=L;}void Link::clear(pnode & L){int i=0;pnode p=L;pnode tmp=NULL;int len=(L->e).data;for(i=0;i<len;i++){tmp=p->next;delete p;p=tmp;}L=NULL;}int Link::get_length(pnode & L){return (L->e).data;;}Elem_t Link::get_elem(pnode & L,int i){int j=0;pnode p=L->next;while(j <i ){j++;p=p->next;}return p->e;}void Link::traverse(pnode & L){int i=0;pnode p=L->next;//避免把头指针元素输出/* 1) 以长度作为循环链表是否结束的依据 * int len= (L->e).data;for(i=0;i< len;i++){cout<<"The "<<i<<"th elem is "<<(p->e).data<<endl;p=p->next;}*///2)以 next 指针指向 头指针 作为结束标识while(p != L){cout<<"The "<<i<<"th elem is "<<(p->e).data<<endl;p=p->next;}}void Link::insert(pnode & L,Elem_t e,int i)// before i insert{int j=0;pnode p=L;pnode tmp=NULL;for(j=0;j< i;j++){p=p->next;}tmp=new node;(tmp->e).data=e.data;tmp->next=p->next;p->next=tmp;( L->e).data++;}void Link::delete_elem(pnode & L,int i){int j=0;pnode p=L->next;pnode tmp=NULL;for(j=0;j< i-1;j++){p=p->next;}tmp=p->next;//将要被free的节点p->next=p->next->next;//下一节点指向 下下一节点(L->e).data--;//长度减一delete tmp;}
0 0
- 简单数据结构之循环链表(C++实现)
- 【数据结构】实现循环链表(c++)
- 数据结构--双向循环链表C实现
- 简单数据结构之顺序表(C实现)
- 简单数据结构之链式表(C实现)
- C - 数据结构之 循环链表
- 简单数据结构的实现之循环队列
- 数据结构C语言实现之循环队列
- 数据结构C语言实现之循环队列
- 数据结构之---C语言实现循环队列
- 数据结构-约瑟夫环的简单实现(循环链表)
- C语言实现数据结构中的循环链表
- 数据结构的C实现_双向循环链表
- 数据结构--双向循环链表c语言实现
- 数据结构 循环链表 C语言程序实现
- 数据结构C语言之线性表简单实现
- c语言数据结构之单向循环链表约瑟夫问题
- 数据结构C语言之单链表简单实现
- WinSock三种选择I/O模型
- ExtJs中多个form情况下指定某个form使能
- JPA实体继承实体的映射策略
- 陈怡暖:美元及股指走跌,金银受益小幅收涨
- context.write
- 简单数据结构之循环链表(C++实现)
- 【MyECLIPSE】no actions available问题的解决
- 操作系统笔试题及答案
- 使用Volley的PullToRefreshListView分页加载
- 从安全和体验上解析移动App的登录
- Vmware vSphere 5.0实战教程之二 vMotion及Storage vMotion实战
- 对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾
- 几款测绘用无人机(翔宇,Trimble UX5,拓普康天狼星 Sirus)的简单比较
- makefile学习