数据结构-单链表

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;}

posted @ 2019-03-24 19:14  赵钱富贵  阅读(201)  评论(0编辑  收藏  举报