• 数据结构-单链表


    using namespace std;
    struct LNode{
    	char data;
    	LNode *next;
    };
    class LinkList{
    	private:
    		LNode *head;
    	public:	
    		LNode *createLinkListHead();//头插法创建 
    		LNode *createLinkListTail(); //尾插法创建
    		int length();//链表长 
    		bool empty();//判空
    		void show();//输出整个链表 
    		
    		 //增 
    		int insert(int i,char x);//插入一个元素 
    		int push_back(char x);//尾插
    		int push_front(char x);//头插
    		
    		 //删 
    		int erase(int i);//删除一个元素
    		int clear();//清空?
    		
    		//改
    		int updateNode(int i,char x); 
    		
    		//查 
    		char get(int i);//按序号查找
    		int locate(char x);//按值查找 
    	
    };
    
    
    
    //头插法建立单链表,数据读入顺序与链表顺序相反
    
    LNode *LinkList::createLinkListHead(){
    	char flag='.';
    	LNode *s;
    	char x;
    	cout<<"输入一串字符'.'输入结束。 ";
    	cin>>x; 	
    	while(x!=flag){
    		s=new LNode;
    		s->data=x;
    		s->next=head->next;
    		head->next=s;
    		cin>>x;
    	}
    	return head;
    } 
    LNode *LinkList::createLinkListTail(){
    	LNode *s,*rear;
    	char x;
    	cout<<"输入一串字符'.'输入结束。 ";
    	cin>>x;
    	
    	head->next=rear=NULL;
    	while(x!='.'){
    		s=new LNode;
    		s->data=x;
    		if(head->next==NULL)
    			head->next=s;
    		else
    			rear->next=s;
    		rear=s;
    		cin>>x;
    	}
    	rear->next=NULL;
    	return head;
    }
    int LinkList::length(){
    	int i=0;
    	LNode *p;
    	p=head;
    	while(p->next){
    		i++;
    		p=p->next;
    	}
    	return i;
    }
    bool LinkList::empty(){
    	if(head->next==NULL){
    		return true;
    	}
    	return false;
    } 
    void LinkList::show(){
    	LNode *p=head->next;
    	if(p==NULL){
    		cout<<"表空"; 
    	}
    	while(p!=NULL){
    		cout<<p->data;
    		p=p->next;
    	}
    	cout<<endl;
    }
    
    int LinkList::insert(int i,char x){
    	LNode *p=head;
    	while(i--){
    		p=p->next;
    	}
    	LNode *s=new LNode;
    	s->data=x;
    	s->next=p->next;
    	p->next=s;
    	return 1;
    	
    }
    
    
    int LinkList::push_back(char x){
    	LNode *p=head,*s;
    	while(p->next){
    		p=p->next;
    	}	
    	s=new LNode;
    	s->data=x;
    	s->next=NULL; 
    	p->next=s;
    	return 1;
    }
    int LinkList::push_front(char x){
    	LNode *p=new LNode;
    	p->data=x;
    	p->next=head->next;
    	head->next=p;
    	return 1;
    }
    int LinkList::erase(int i){
    	LNode *p=head,*s;
    	while(i--){
    		p=p->next;
    	}
    	
    	s=p->next;
    	p->next=s->next; 
    	delete s;
    	return 1;
    }
    int LinkList::clear(){
    	LNode *p;
    	p=head;
    	while(p->next){
    		LNode *s=new LNode;
    		s=p->next;
    		p->next=s->next; 
    		delete s;
    	}
    }
    int LinkList::updateNode(int i,char x){
    	LNode *p,*s,*t;
    	p=head;
    	while(i--){
    		p=p->next;
    	}
    	t=p->next;
    	s=new LNode;
    	s->data=x;
    	s->next=t->next;
    	p->next=s;
    	delete t;
    }
    char LinkList::get(int i){
    	LNode *p;
    	p=head->next;
    	while(i--){
    		p=p->next;
    	}
    	return p->data;
    }
    int LinkList::locate(char x){
    	int i;
    	LNode *p;
    	p=head->next;
    	while(p->data!=x){
    		p=p->next;
    		i++;
    	}
    	return i;
    }
    

      

    using namespace std;struct LNode{char data;LNode *next;};class LinkList{private:LNode *head;public:LNode *createLinkListHead();//头插法创建 LNode *createLinkListTail(); //尾插法创建int length();//链表长 bool empty();//判空void show();//输出整个链表  //增 int insert(int i,char x);//插入一个元素 int push_back(char x);//尾插int push_front(char x);//头插 //删 int erase(int i);//删除一个元素int clear();//清空?//改int updateNode(int i,char x); //查 char get(int i);//按序号查找int locate(char x);//按值查找 };


    //头插法建立单链表,数据读入顺序与链表顺序相反
    LNode *LinkList::createLinkListHead(){char flag='.';LNode *s;char x;cout<<"输入一串字符'.'输入结束。 ";cin>>x; while(x!=flag){s=new LNode;s->data=x;s->next=head->next;head->next=s;cin>>x;}return head;} LNode *LinkList::createLinkListTail(){LNode *s,*rear;char x;cout<<"输入一串字符'.'输入结束。 ";cin>>x;head->next=rear=NULL;while(x!='.'){s=new LNode;s->data=x;if(head->next==NULL)head->next=s;elserear->next=s;rear=s;cin>>x;}rear->next=NULL;return head;}int LinkList::length(){int i=0;LNode *p;p=head;while(p->next){i++;p=p->next;}return i;}bool LinkList::empty(){if(head->next==NULL){return true;}return false;} void LinkList::show(){LNode *p=head->next;if(p==NULL){cout<<"表空"; }while(p!=NULL){cout<<p->data;p=p->next;}cout<<endl;}
    int LinkList::insert(int i,char x){LNode *p=head;while(i--){p=p->next;}LNode *s=new LNode;s->data=x;s->next=p->next;p->next=s;return 1;}

    int LinkList::push_back(char x){LNode *p=head,*s;while(p->next){p=p->next;}s=new LNode;s->data=x;s->next=NULL; p->next=s;return 1;}int LinkList::push_front(char x){LNode *p=new LNode;p->data=x;p->next=head->next;head->next=p;return 1;}int LinkList::erase(int i){LNode *p=head,*s;while(i--){p=p->next;}s=p->next;p->next=s->next; delete s;return 1;}int LinkList::clear(){LNode *p;p=head;while(p->next){LNode *s=new LNode;s=p->next;p->next=s->next; delete s;}}int LinkList::updateNode(int i,char x){LNode *p,*s,*t;p=head;while(i--){p=p->next;}t=p->next;s=new LNode;s->data=x;s->next=t->next;p->next=s;delete t;}char LinkList::get(int i){LNode *p;p=head->next;while(i--){p=p->next;}return p->data;}int LinkList::locate(char x){int i;LNode *p;p=head->next;while(p->data!=x){p=p->next;i++;}return i;}

  • 相关阅读:
    敏捷开发宣言
    OpenGL SL 优化要点
    Cocoa Touch 开发框架
    MSIL详解
    Android之Services
    Android之ActivityII
    Android之Activity
    托管执行过程
    Android之Content ProviderII
    Android之Content Providers
  • 原文地址:https://www.cnblogs.com/mznsndy/p/10589592.html
Copyright © 2020-2023  润新知