帶結點與不帶結點用頭插法和尾插法創建單鏈表


 

 

一、采用帶有頭結點的頭插法逆向建立單鏈表

Linklist List_HeadInsert1(LinkList &L)  //采用帶有頭結點的頭插法逆向建立單鏈表 
{
	LNode *s;  //聲明一個臨時結點 
	int x;
	L=(LinkList)malloc(sizeof(LNode));  //創建頭結點
	L->next=NULL;  //初始為空鏈表 
	scanf("%d",&x);  //輸入結點的值 
	while(x!=9999)
	{
		s=(LNode*)malloc(sizeof(LNode));  //創建新結點 
		s->data=x;
		s->next=L->next;  //將新結點插入表中,L為頭指針 
		L->next=s;
		scanf("%d",&x);
	}
	return L;
}

  

 

二、采用不帶有頭結點的頭插法逆向建立單鏈表

Linklist List_HeadInsert2(LinkList &L)  //采用不帶有頭結點的頭插法逆向建立單鏈表 
{
	LNode *s;  //聲明一個臨時結點 
	int x;
	L=NULL;  
	scanf("%d",&x);  //輸入結點的值 
	while(x!=9999)
	{
		s=(LNode*)malloc(sizeof(LNode));  //創建新結點 
		s->data=x;
		if(L==NULL)  // 若第一次創建節點,則將該點設置為頭節點
		{
			L=s;
			s->next=NULL;
		 } 
		else{  // 若不是第一次創建節點,則直接將新節點接到鏈表頭
			s->next=L;
			L=s;
		}
		scanf("%d",&x);
	}
	return L;
}

  

 

三、采用帶有頭結點的尾插法正向建立單鏈表

Linklist List_TailInsert1(LinkList &L)  //采用帶有頭結點的尾插法正向建立單鏈表 
{
	LNode *s,*r;  //s為臨時結點,r為表尾指針 
	int x;
	L=(LinkList)malloc(sizeof(LNode));  //創建頭結點
	L->next=NULL;  //初始為空鏈表 
	r=L;
	scanf("%d",&x);  //輸入結點的值 
	while(x!=9999)
	{
		s=(LNode*)malloc(sizeof(LNode));  //創建新結點 
		s->data=x;
		r->next=s;
		r=s;  //r指向新的表尾結點 
		scanf("%d",&x);
	}
	r->next=NULL;  //尾結點指針為空 
	return L;
}

  

 

四、用不帶有頭結點的尾插法正向建立單鏈表

Linklist List_TailInsert2(LinkList &L)  //采用不帶有頭結點的尾插法正向建立單鏈表 
{
	LNode *s,*r;  //s為臨時結點,r為表尾指針 
	int x;
	L=NULL;  
	r=L;
	scanf("%d",&x);  //輸入結點的值 
	while(x!=9999)
	{
		s=(LNode*)malloc(sizeof(LNode));  //創建新結點 
		s->data=x;
		if(L==NULL)  // 創建鏈表的第一個節點
		{
			L=s;
			r=s;
			s->next=NULL;
		 } 
		else{
			r->next=s;
			r=s;
		}
		scanf("%d",&x);
	}
	r->next=NULL;  //尾結點指針為空 
	return L;
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM