学生信息链表

stu_msg* head=NULL;//链表头初始化
static int stucnt=0;
stu_msg* stulink_insert(stu_msg* node){
	stu_msg* new_node=node;//
	stucnt++;//学生数
	if(NULL==head){//链表还没有节点
		head=new_node;//链表头
		head->next=NULL;
		head->prev=NULL;
	}else{
		//一种方式是:插入到链表尾;一种是:插入到链表头
		stu_msg* p=head->next;
		stu_msg* q=head;//从头节点开始
		while(NULL!=p){//直到找到末尾节点
			q=p;
			p=p->next;
		}
		q->next=new_node;
		new_node->prev=q;
		new_node->next=NULL;
		//从链表头插入
		//head=new_node;//更新头节点
		//head->next=q;
		//head->num=stucnt;
	}
	return new_node;
}
stu_msg* stunode_create(char name[],char sex[],char phone[],char number[]){
	stu_msg* node=new stu_msg;//分配内存
	if(NULL==node)
		return NULL;
	node->name=new char[strlen(name)+1];
	if(NULL==node->name)
		return NULL;
	strcpy(node->name,name);//node->name=name;

	node->sex=new char[strlen(sex)+1];
	if(NULL==node->sex)
		return NULL;
	strcpy(node->sex,sex);//node->sex=sex;

	node->phone=new char[strlen(phone)+1];
	if(NULL==node->phone)
		return NULL;
	strcpy(node->phone,phone);//node->phone=phone;

	node->number=new char[strlen(number)+1];
	if(NULL==node->number)
		return NULL;
	strcpy(node->number,number);//node->number=number;

	node->next=NULL;node->prev=NULL;//指针初始化
	return node;
}

 
void stunode_delete(stu_msg* node){//删除节点
	if(NULL==head)
		return ;
	if(NULL==node)
		return ;//删除失败,找不到对应节点
	if(head==node){//删除的是头节点
		head=NULL;		
	}else if(NULL==node->next){//删除的是尾节点
		stu_msg* p=node->prev;
		p->next=NULL;
	}else{//是中间节点
		stu_msg* p=node->prev;
		stu_msg* q=node->next;
		p->next=q;
		q->prev=p;
	}
	stucnt--;
//节点删掉后释放内存
	delete []node->name;
	delete []node->sex;
	delete []node->phone;
	delete []node->number;
	delete node;
}
//头文件定义
struct stu_msg{
	char *name,*sex,*phone,*number;
	stu_msg *prev;
	stu_msg *next;
};
stu_msg* stulink_insert(stu_msg* node){
	stu_msg* new_node=node;//
	stucnt++;//计数
	if(NULL==head){//链表还没有节点
		head=new_node;//链表头
		head->next=NULL;
		head->prev=NULL;
	}else{
		//一种方式是:插入到链表尾;一种是:插入到链表头
		stu_msg* q=head;//从头节点开始
		head=new_node;//更新头节点
		head->next=q;
		q->prev=head;
	}
	return new_node;
}
这个程序有点粗糙简单,适合入门作参考。


 

                
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值