单链表C++

#include<cstdio>
#include<iostream>
using namespace std;
struct Node{//构建一个节点类 		
	int data;//数据域 
	Node *next;//指针域 
}; 
int len=0;//记录链表长度 
Node *CreatLink(int LinkNumber,int data[]){//创建链表 
	if(LinkNumber<=0){//LinkNumber 节点数目 
		cout<<"创建链表节点数目小于1"<<endl; 
	} 
	Node *NewNode=new Node;//分配内存 
	NewNode->data=data[0];//数据域为零 
	NewNode->next=NULL;//指针域指向空  
	
	Node *Head,*pre;
 	Head=NewNode;
 	//单链表当前节点不储存先前节点的地址 
 	//三个指针 NewNode创建新节点 Head指向头节点 pre指向先前节点  
 	for(int i=1;i<=LinkNumber;++i){//
 		pre=NewNode;//将pre赋为当前节点 
        	NewNode=new Node;//NewNode为新节点 
        	pre->next=NewNode;//当前结点指向新节点
        	pre->data=data[i];//新节点赋值为data[i] 
       	        len++;			
	} 
	return Head;
} 
bool Insert(Node *Head,int position,int data){//position 位置 		
	//在Node链表的position处插入插入元素data  
	if(position==1){//在链表头部插入 
 		Node *NewNode=new Node;//NewNode为要插入的当新点
 		NewNode->data=data;//为新节点赋值 
 		NewNode->next=Head;//新节点指向头节点
  		Head=NewNode;//
 	}
	else {//在指定位置插入 
  		int cnt=1;//记录位置 
  		Node *cur=Head; //当前节点cur 从头节点开始 
		while(cnt!=position-1){//cur循环到指定位置的前一节点 
			cnt++;
			cur=cur->next;//cur赋为下一节点 
		}
		Node *NewNode=new Node;//NewNode为要插入的新节点
		NewNode->data=data;//为新节点赋值 
		if(cur->next!=NULL){//如果cur指向的下一节点非空 
	   		NewNode->next=cur->next;//新节点指向当前节点指向的节点 
	   		cur->next=NewNode;//当前节点指向新节点 
	  	} 
	  	else {//当前节点为尾节点 
	   		NewNode->next=NULL;//新节点为空 
	   		cur->next=NewNode;//当前节点指向新节点 
	  	}
	 }
	 return true;
}  
bool Delete(Node *Head,int position){//在Node链表中删除位于position位置的节点
	  if(position==1){//删除头节点 
	  	Node *NewNode=Head;//新建NewNode节点=头节点 
		Head=NewNode->next;//头节点指向头节点指向的节点 
	  	delete NewNode;//删除NewNode节点 
	  } 
	  else if(position==len){//删除尾节点 
	  int cnt=1;
	  Node *cur=Head;
	  while(cnt!=len-1){//cur循环到倒数第二个节点
	  	cnt++;
	  	cur=cur->next;
	  } 
	  Node *Tail=cur->next;//Tail为尾节点 
	  delete Tail;
	  cur->next=NULL;//cur指向空 
	  } 
	  else{//中间 
	  	int cnt=1;
	  	Node *cur=Head;
	  	while(cnt!=position-1){
	  		cnt++;
	  		cur=cur->next;    
	   	}
	  	Node *NewNode=cur->next;//NewNode为要删除的节点
	  	cur->next=NewNode->next;//cur指向删除节点指向的节点 
	 	delete NewNode; //删除 
	 } 
} 
int main(){
	 
	 
	 return 0;
} 
	
	
	```
	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值