單鏈表的創(chuàng)建-尾插法
#include<iostream>
#include<cstdlib>
using namespace std;
struct LNODE
{
int val;
LNODE *pnext;
};
LNODE* initListEnd(int arr[],int n) //尾插法披泪,head:目標(biāo)鏈表頭結(jié)點(diǎn)庐镐,arr[]:插入值存放數(shù)組笛厦,n:數(shù)組長(zhǎng)度
{
LNODE *head = (LNODE*)malloc(sizeof(LNODE));
head->pnext = NULL;
LNODE *tmpNode; //臨時(shí)結(jié)點(diǎn)用來(lái)存放當(dāng)前arr的值
LNODE *endNode; //始終指向目標(biāo)鏈表尾端的節(jié)點(diǎn)
endNode = head; //此時(shí)目標(biāo)鏈表只有頭結(jié)點(diǎn)
for(int i = 0 ; i < n ; ++i ) //將arr[]中的值依次依次插入鏈表尾端
{
tmpNode = (LNODE*)malloc(sizeof(LNODE)); //為新結(jié)點(diǎn)申請(qǐng)空間
tmpNode->val = arr[i]; //新結(jié)點(diǎn)賦值
endNode->pnext = tmpNode; //目標(biāo)鏈表尾指向新結(jié)點(diǎn)
endNode = endNode->pnext; //更新endNode使其指向目標(biāo)結(jié)點(diǎn)尾端
}
endNode->pnext = NULL;
return head;
}
int main()
{
int n = 10;
int arr[n]={1,2,3,4,5,6,7,8,9,0};
LNODE *head;
head = initListEnd(arr,n);
LNODE *tNode = head->pnext; //創(chuàng)建臨時(shí)結(jié)點(diǎn)tNode依次輸出鏈表各結(jié)點(diǎn)的值
while(tNode->pnext != NULL)
{
cout<<tNode->val<<" "<<endl;
tNode = tNode->pnext;
}
cout<<tNode->val<<endl; //最后一個(gè)結(jié)點(diǎn)pnext已經(jīng)為NULL了,所以循環(huán)中沒有輸出它汉买,需要單獨(dú)輸出
return 0;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者