連結串列頭節點問題(指標作為引數傳遞不能為NULL)
真是腦殘,以前沒有注意過這個問題,今天噁心了我好一會。做個記錄,以後不要再犯。
這樣在main函式裡面定義一個指標變數然後傳進函式裡面在申請空間的做法是錯誤的。
void creat(node* head)
{
if(head==NULL){
head=(node*)malloc(sizeof(node));
}
node *p=(node*)malloc(sizeof(node));
p->date=1;
head->next=p;
}
int main()
{
node* head;
head=NULL;
return 0;
}
正確做法:先讓main函式裡面的head指向一個結構體(可以自己申請一個)
原因:指標的傳遞傳遞的是地址,如果不讓head在mian函式裡面指向一個結構體,head就沒有地址,不能作為指標傳遞!
相關推薦
連結串列頭節點問題(指標作為引數傳遞不能為NULL)
真是腦殘,以前沒有注意過這個問題,今天噁心了我好一會。做個記錄,以後不要再犯。 這樣在main函式裡面定義一個指標變數然後傳進函式裡面在申請空間的做法是錯誤的。 void creat(node* head) { if(head==NULL){ head=(node*)mal
LeetCode第24題:兩兩交換連結串列的節點(JAVA實現)
題目: 我的解答: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(i
Delphi 呼叫 c編寫的動態連結庫,結構體指標作為引數
折騰了一天終於把 結構體指標作為在delphi和c動態連結庫之間函式引數傳遞的問題徹底解決了,花了一天時間的主要原因是沒有領會引數傳遞的精髓。現在把c程式碼和delphi程式碼粘上來,以供後來者學習參考。 delphi程式程式碼: unit Unit3; interfac
如何在O(1)時間刪除連結串列指定節點(Java實現)
宣告:題目背景為劍指offer-13 在O(1)時間刪除連結串列節點 給出一個連結串列如下: 刪除連結串列中給定節點,我想最容易想到的方法就是迴圈遍歷,假設想刪除節點toBeDeleted,
c指標作為引數傳遞以及指標的指標
#include "stdio.h" void pointer(int *p) { int a = 11; printf("\n\nEnter function"); printf("\nthe p is point to %p , addr is %X, *p is %d",p ,
Python實現LeetCode連結串列類演算法(例子:Merge k Sorted Lists)
連結串列的演算法關鍵點:新建立一個頭結點,並且將這個節點賦值給另外的連結串列物件來完成操作。 例如19. Remove Nth Node From End of List class Soluti
關於指標作為引數傳遞的一些探討
值傳遞, 指標傳遞? 這幾天在學習C過程中,在使用指標作為函式引數傳遞的時候出現了問題,根本不知道從何得解:原始碼如下: createNode(BinNode *tree,char *p) { tree = (BinNode *) mal
為什麼要返回連結串列頭指標()
訪問連結串列的時候,都是從頭結點開始的,當你用完的時候也要回到頭結點,這是通用的方法,如果不,有下列兩種情況。 1.如果不返回呢,這個連結串列就無法用了,應為無法抓住一個節點,是無法順藤摸瓜,找到其它元素了。 2.如果返回其它節點呢,如果是迴圈連結串列或者雙向連結串列,這是可以訪問的,雖然程
堅持堅持!用Java寫出刪除一個連結串列的倒數第N個節點,並返回頭節點(N總是可達的)
這個題目有個前提條件就是N總是可達的,所以直接省去了一種情況(N不可達時的情況) 思路: 資料結構裡面首先給定兩個指標p和q分別都指向這個連結串列的頭節點,然後若想求出這個連結串列的倒數第N個節點,方法就是先讓p向後挪N個位置,q不動。 因為N總是可達的,所以會有倆種情況,
C++建立單向連結串列連結串列頭指標需要使用指標型別的引用引數?
{int date; Node *next;}; void CreateList(Node *&head) //引用引數是表頭指標 { s=new Node; cin>>s->data; while(s->data!=0) {if(head==NULL)head=s; e
連結串列面試題之快慢指標問題(一) 查詢連結串列中間節點
查詢連結串列中間節點 一.問題描述 給點一個連結串列,返回該連結串列的中間節點。 二.問題分析 假定一個連結串列中節點資料依次為(單數):1->2->3-&
在一個排序的連結串列中,存在重複的結點,請刪除該連結串列中重複的結點,重複的結點不保留,返回連結串列頭指標。 例如,連結串列1->2->3->3->4->4->5 處理後為 1->2->5
題目描述 在一個排序的連結串列中,存在重複的結點,請刪除該連結串列中重複的結點,重複的結點不保留,返回連結串列頭指標。 例如,連結串列1->2->3->3->4->4->5 處理後為 1->2->5 /* 思路:由於是排序連結串列,只需判斷
劍指-OFFER_5 輸入一個連結串列的頭節點,從尾到頭列印連結串列每個節點的值。
題源: 輸入一個連結串列的頭節點,從尾到頭列印連結串列每個節點的值。 package Chap2; /** * 輸入一個連結串列的頭節點,從尾到頭列印連結串列每個節點的值。 */ imp
在一個排序的連結串列中,存在重複的結點,請刪除該連結串列中重複的結點,重複的結點不保留,返回連結串列頭指標。 例如,連結串列1->2->3->3->4->4->5 處理後為 1->2->5
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ class Solutio
劍指offer——在一個排序的連結串列中,存在重複的結點,請刪除該連結串列中重複的結點, # 重複的結點不保留,返回連結串列頭指標。
# 在一個排序的連結串列中,存在重複的結點,請刪除該連結串列中重複的結點, # 重複的結點不保留,返回連結串列頭指標。 例如,連結串列1->2->3->3->4->4->5 處理後為 1->2->5 # -*- coding:u
C++雙向連結串列的建立(無頭節點)
#ifndef doublychain_ #define doublychain_ #include<iostream> #include<algorithm> #include"chainNode.h" using namespace std;
連結串列的排序(交換指標指向)
本學期c語言實習,要用到連結串列的排序。雖說以前沒用過,但還是花時間寫了寫。老師說排序的時候指標不變交換節點裡面的元素,我覺得這道不如交換指標的指向來的乾脆,因為如果按老師的方法來寫,節點裡的元素很多的話就廢了== #include <stdio.h> #inc
6-5 連結串列逆置(20 分)——頭插或者重開新連結串列頭插
6-5 連結串列逆置(20 分) 本題要求實現一個函式,將給定單向連結串列逆置,即表頭置為表尾,表尾置為表頭。連結串列結點定義如下: struct ListNode { int data; struct ListNode *next;
連結串列頭結點與頭指標
因為在單鏈表中,第一個結點是沒有前驅結點的,他是整個連結串列的開始地址,如果想操作該節點,必須將該節點放到一個指標變數,該變數即head頭指標。這樣就可以通過head遍歷到連結串列的每一個節點。 有時
【LeetCode】連結串列 linked list(共34題)
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica } 【2】Add Two Numbers 【19】Remove Nth Node From End of List (2018年10月30日