日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言 链表 头插法

發(fā)布時間:2024/2/28 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言 链表 头插法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

代碼(VS2017中運行)

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct student {int num;float score;struct student *pnext;//*pnext存的是下一個節(jié)點的首地址 }stu,*pstu; //頭插法 void list_head_insert(pstu *pphead, pstu *pptail, int i)//*pphead是二級指針,存儲頭指針的地址;*pptail是二級指針,存儲尾指針的地址 {pstu pnew;//pnew是新的鏈表的一級指針pnew = (pstu)malloc(sizeof(stu));//pstu也就是struct student*類型;pnew是首地址;malloc是void類型,所以需要強制類型轉(zhuǎn)化memset(pnew, 0, sizeof(stu));pnew->num=i;//pnew->num是一個整體;訪問結(jié)構(gòu)體的num成員,另其值為iif (NULL == *pphead)//如果鏈表為空(第一次循環(huán)時鏈表為空),讓頭指針指向新節(jié)點,尾指針也指向新節(jié)點{*pphead = pnew;*pptail = pnew;}else//如果鏈表非空{pnew->pnext = *pphead;//讓新節(jié)點的pnext成員指向原有鏈表頭*pphead,*pphead存儲的是原有鏈表頭的首地址*pphead = pnew;//讓原有鏈表頭節(jié)點*pphead指向新節(jié)點pnew} } //打印 void list_head_print(pstu phead) {while (phead != NULL){printf("%d ", phead->num);phead = phead->pnext;} } int main() {int i;pstu phead = NULL;//頭指針pstu ptail = NULL;//尾指針//在vs2017中,這里的scanf結(jié)束時要輸入三遍ctrl z+三遍回車while (scanf("%d", &i) != EOF){list_head_insert(&phead, &ptail, i);//&phead是頭指針的地址,&ptail是尾指針的地址}list_head_print(phead); system("pause"); }

運行效果

第一行是輸入,最后一行是輸出
vs2017的^z^z^z很迷

總結(jié)

以上是生活随笔為你收集整理的C语言 链表 头插法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。