首页 > 代码库 > 华南理工数据结构大作业第一题单链表 删除创建等各种简易操作

华南理工数据结构大作业第一题单链表 删除创建等各种简易操作

#include<iostream>
#include<windows.h>
#include<string>
/*   (1)  初始化单链表h;
      (2)   依次插入5个元素:{“张三” , 85}, {“李四” , 95},
              {“王五” , 75}, {“陈军” , 80}, {“程涛" , 90}
      (3)   输出单链表h的内容;
      (4)   输出单链表的长度;
      (5)   输出单链表h的第3个元素;
      (6)   输入一个姓名(如:陈军),在单链表中查找该元素,输出该元素的编号;
      (7)   删除第4个元素,并输出被删除元素的内容;
      (8)   输出单链表h的内容;
      (9)   释放单链表h。
      注意:
      每个过程要显示出各种提示信息。如:要求输出单链表的长度,则要显示:当前单链表的长度为:5.
*/
using namespace std ;
struct   Student{
	string  name;
    int   score;
} ;
typedef   Student  ElemType ;
struct  LinkList{
	ElemType data ;
    LinkList  * link  ;
	LinkList( LinkList  *ptr = NULL ){ link  = ptr ;}

} ;

	//重载写这里
istream &operator>>(istream &is,ElemType &c){
	is >> c.name>>c.score  ;
    return is ;
}
ostream &operator<<(ostream &os,ElemType &c){
	os << c.name<< c.score ;
    return os ;
}
void print(LinkList *first){
	LinkList *cur = first ;
	cur = cur -> link;
		 while (cur != NULL ){ 
			 cout <<cur->data <<endl ; 
			 cur = cur ->link ;			
		 }
}//代码有误
//出现的问题在于,first的link是空的,没有接着连接下去 
void printlen(LinkList *first){
					int length  = 0 ;
					if(first->link == NULL) {
						cout <<"fuckashole"<<endl ;
					}
					while (first != NULL){//cout<<cur->dat<<endl;
						length++ ;
						first =first->link	 ;
					}  
					cout <<"链表的长度为 : "<< length-1 <<endl;
}
LinkList *Locate (LinkList *first ,int w_place ) {	//	定位函数,插入与删除时用来确定某一位置
			int k = 0 ;
			LinkList  *cur = first  ;
			while( k != w_place ) {
				cur = cur->link ;
				k++;
			}
			return cur ;
}
void LocPri (LinkList *&first ) {
	cout <<"请输入您想输出的位置 : ";
	int lp_number ;
	cin >> lp_number ;
	Locate (first ,lp_number ) ;
	cout <<Locate (first ,lp_number )  ->data <<endl;
}
void create(LinkList  *&first ,int n){	//n就是第一个结点的
					cout<<"请输入对象: "<<endl;
					ElemType  n_data ;
					cin >> n_data ; 
					//first->link = NULL ;
					//first ->data = http://www.mamicode.com/n_data ;//这边需要用到重载>

华南理工数据结构大作业第一题单链表 删除创建等各种简易操作