用c編寫乙個函式create(),該函式可以用於建立乙個連結串列,連結串列中的結點包括學號、成績,具有雙向指標
1樓:網友
不難,自己看下2叉樹的內容,你要急的話沒法幫你,等的起的話,週末你沒答案,我貼乙個出來。
2樓:網友
/*學生<1>的學號 : 5670
學生<1>的成績 : 999
學生<1>的成績 : 90
請按任意鍵繼續。 .
#include
#include
#include
typedef struct node *node,*linklist;
去除id中的非數字字元,如果id長度大於slen,只取用前slen個,/ 如果不足slen個字元,則在前端新增字元'0'。
char *stid(char *id, int slen)
if(len >= slen) id[slen] = '\0'; // 擷取。
elsereturn id;
int stscore(char *s, int min, int max)
for(i = 0; p[i]; i) num = 10 * num + p[i] -'0';
if((num < min) |num > max)) return -1;
return num;
linklist createlist(int n) while(q->score == -1);
p->next = q;
p = q;
p->next = null;
return head;
void printlist(linklist head)
printf("");
int main()
求連結串列中第i個結點的指標(位址),若不存在,則返回null
3樓:匿名使用者
typedef struct node //山廳連結串列中的結點資料結腔賀構。
int data;
struct node *next;
node,*pnode;
pnode nodi_add(pnode head,int i)//返回第i個結點的逗圓隱指標,如果不存在,就返回null
pnode a=head;
while (-i&&a)
a=a->next;
return a;
c語言要返回連結串列頭指標,函式返回值該怎麼寫
4樓:
#include
#include
#define null 0
#define len sizeof(struct student)
struct student
long num;
float score;
struct student *next;
int n;/*n為全域性變數,本檔案模組中各函式均可使用它*/
struct student *creat(void)/*定義函式。此函式帶回乙個指向連結串列頭的指標*/
struct student *head;
struct student *p1,*p2;
n=0;p1=p2=(struct student *)malloc(len);/*開闢新的乙個單元*/
scanf("%ld,%f",&p1->num,&p1->score);
head=null;
while(p1->num!=0)
n=n+1;
if(n==1)
head=p1;
elsep2->next=p1;
p2=p1;
p1=(struct student *)malloc(len);
scanf("%ld,%f",&p1->num,&p1->score);
p2->next=null;
return(head);
本人平時比較喜歡編寫程式,我希望能和大家討論!!*/
如何編乙個自定義函式,用來把乙個檔案的內容賦給乙個連結串列(已定義),並返回連結串列的頭指標?
5樓:網友
假設檔案內容的結構體名稱為node
node* add_node(node* head)move->next = node;
return head;}
6樓:
檔案內容是什麼格式?連結串列的結構體是怎麼定義的?
用函式建立連結串列,頭指標在函式內有位址,但返回主函式的頭指標卻為
7樓:紅s桃
你的head指標是在函式內部定義的,也就是區域性變數,當函式執行完成就會銷燬,主程式呼叫完這個set函式,set函式內的頭指正自然也就銷燬了,解決方法時把head指標在函式外面定義,變為全域性變數。
8樓:匿名使用者
你這孩子真是個馬大哈~
問題1: *
a=p1->a; //p1->a = a; *c=p1->c; //p1->c = c; *問題2:void print(struct data * head)if("p1==null") printf("連結串列為空"); //若連結串列是空表 ||這裡if語句是這樣寫麼?if(p1==null)
/去掉引號,加上引號這是一堆字串永遠為『真』
return(head); //void型別怎麼還設定返回值?
我用這個函式想改變這個連結串列的頭指標的值,怎麼改變不了呢?
9樓:手機使用者
。不是位於父函式中的那個真正的頭指標。
只有把乙個指頃虧枝針傳遞給頭指標,才能把父函式里的頭指標修改雀敏空慎為指向新頭元素。程式改為如下即可:
倆個子函式,分別建立連結串列和顯示連結串列,可最後乙個節點就顯示不出來,誰給看看什麼問題
10樓:網友
這裡和野指標沒關係,即使去掉帶註釋的那句話,也沒問題。
不要拿野指標這個名詞來胡來。
問題應該在你在建連結串列的時候,for迴圈外的那句free(new);
你把最後的乙個節點給釋放掉了,但是你的倒數第二節點的next指標還是指向了最後這個節點的位址,這才是野指標。至於new=null;根本沒有任何意義。
這裡最簡單的就是把free(new);這句話去掉。
已知head指向帶頭結點的單向連結串列,連結串列中每個結點包含字元型資料域(data)和指標域(next)。請編寫函
千里 已知head指向一個帶頭結點的單向連結串列連結串列中每個結點包含字元型資料域data和指標域next。請編寫函式實現連結串列的逆置。 光之琉璃影之殤 include include typedef struct node node,pnode pnode create void void ou...
C 連結串列中插入結點引數的問題
插入的節點有可能是連結串列新的首節點,故此時需要改變表首指標的值,故傳遞引數時要傳遞其引用 node 或其指標 node int a 0 int b a b 3 這時a的結果也是3,你可以試試。表示引用,即變數的一個別名。對於函式引數,它相當於引數的地址傳遞。接著上邊 int e 1 int c a...
假設以二叉連結串列儲存的二叉數中,每個結點所含資料結構元素均為單字母,試編寫演算法,按樹狀列印二叉樹的算
廣度優先遍歷,按層列印應該就行了。不過考慮到控制檯一行最多列印80個字元,要表現出子結點之間的左右關係,麼根結點要在第40或者41格列印,那麼第二層2個結點的列印空間是39和40個字元寬,考慮39個字元寬的那邊,結點要列印在中間,即第20格,這樣,第三層結點的列印空間是19個字元寬,同理,第四層的列...