注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

刘邓

每天收获一点点-目标:富足

 
 
 

日志

 
 

数据结构——线性表(链式)  

2012-02-20 20:58:41|  分类: 技术类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

//基本实现了对链式线性表的学习工作 
//注意:查找是从head->next开始;插入和删除是从head开始 
#include<iostream>
using namespace std;
class Chain;
class Node{
      friend class Chain;
      private:
              char data;
              Node *next;
      };
class Chain{
      private:
              Node *head;
              int length;
      public:
             Chain();
             ~Chain();
             bool IsEmpty(){return length==0;}
             int Length(){return length;}
             bool Find(int i,char &x);
             int Search(const char&x);
             bool Insert(int i,const char &x);
             bool Delete(int i,char &x);
             void ClearList();
             void output(ostream &out)const;
             friend ostream & operator <<(ostream &out,const Chain &x);
             
      };
Chain::Chain(){
               head=new Node;
               length=0;
               head->next=0;
               }
Chain::~Chain(){
                ClearList();
                delete head;
                }
bool Chain::Find(int i,char &x)
{
     if(i<0||i>length-1) return false;
     Node *p= head->next;//从0 开始也就是head的下一个开始 
     for(int k=0;k<i;k++)
     p=p->next;
     x=p->data;
     return true;
     }
void Chain::ClearList()
{
     Node*p=head->next,*q;
     while(p!=0)
     {
                q=p;
                p=p->next;
                delete q;
                }
     head->next=0;
     length=0;
     }
bool Chain::Insert(int i,const char &x)
{
     if(i<0||i>length) return false;
     Node *p=head,*q;
     q=new Node;
     int k;
     for(k=0;k<i;k++)
     {
                     p=p->next;
                     }
     q->data=x;
     q->next=p->next;
     p->next=q;
     length ++;
     return true;
     }
bool Chain::Delete(int i,char &x)
{
     if(i<0||i>length-1) return false;
     Node *p=head;
     int k;
     for(k=0;k<i;k++)
     p=p->next;
     p->next=(p->next)->next;
     length --;
     return true;
     }
void Chain::output(ostream&out)const
{
     Node *p=head->next;
    while(p!=0)
     {out<<p->data;
     p=p->next;}
     }
ostream& operator << (ostream &out,const Chain &x)
{
        x.output(out);
        return out;
        }//运算符的重载

int main()
    char a[]="1I 2Love 3China";
    Chain chain;
    int i;
    for(i=0;a[i]!=0;i++)
    if(chain.Insert(i,a[i])==false){cout<<"插入错误。"<<endl;break;}
    cout<<chain<<endl;
    char x;
    i=0;
    while(i<chain.Length())
    {
      chain.Find(i,x);
      if(x>='0'&&x<='9')chain.Delete(i,x);
      else i++; 
                            
    }
    //cout<<x<<endl;
    cout<<chain<<endl;
    chain.ClearList() ;
    cout<<chain<<endl;
    system("pause");
    return 0;
    }

  评论这张
 
阅读(43)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017