不带头结点的单链表(java)有关将head头指针指向第一个元素的问题

带头结点:
public LinkList(){
head=new Node();}构造头结点
public LinkList(int n,boolean C){
this();初始化头结点
if(C)
crete1(n)
......}
我的问题是不带头结点的话,如何将head指向第一个元素呢?就类似于上面的方法,但是不要头结点
求高手解答!

你好,很高兴您能像我们团队求助,下面我来帮您解答问题。
不带头结点的,在创建链表的时候就不需要构造头结点了。而在添加节点的时候需要判断头结点是否为空,如果头结点为空,那么将该节点作为头结点即可,剩下的就和带头结点的一样了。比如
add(int n){
if(head == null){
head = new Node(n) ; //因为你的Node类没写,我只能去猜测
}else{
this.next = new Node(n) ;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-04
对於一个链表,只要你能有一个起始地址(不管是头结点还是第一个元素),你就可以得到整个链表和链表上的所有操作。而我们通常把这个起始地址用头结点来记录(通常都是开成全局变量),而如果你不想要这个头结点,那麼只需开一个全局变量的元素即可。链表的空间通常是动态分配的,假如你没有一个已知的地址握在手,那麼你分配的空间将淹没在茫茫的内存中,无从查找。头结点就是这样一个已知地址,假若要放弃头结点,那麼只需把第一个元素变为已知地址即可。
最後,小弟在此先谢过大牛们的包涵指正教导。。。追问

怎么把第一个元素地址变为已知?是先确定第一个元素在创建其他元素吗?可以在我的代码基础上改编下吗?

追答

不錯,捨弃頭結點的話就需要單獨考慮第一個元素(一下稱頭元素);模仿頭結點的分配方式,分配空間給頭元素,并填充內容;之後的結點只需按以前那樣分配即可。不瞞您說,我不擅長類和java,代碼是改不了了,希望我的回答能給你啟示。

本回答被提问者采纳
相似回答