如何一步步创建链表
①.結(jié)構(gòu)體
結(jié)構(gòu)體中分為data(數(shù)據(jù)域)和next(指針)
②.創(chuàng)建一個(gè)全空鏈表
struct node *head,*tail,*p; //頭尾和p指針 head = tail =NULL; //必須先設(shè)空,后面才能插入③.添加
p = (struct node *) malloc(sizeof(node));//賦空間,要注意的是,每次把p插入后必須再次賦予空間 cin>>number>>str;//cin就是C語言中的scanf,即輸入。這里的number和str并不是①中結(jié)構(gòu)體里的,你還得重新設(shè)置過,這里命名相同是沒什么關(guān)系的。 p->number=number; strcpy(p->str,str)//strcpy函數(shù)是字符串復(fù)制,意思就是p->str=str,但是沒這寫法,得用到strcpy函數(shù)。 p->next = NULL;//把p->next賦為NULL,然后head和tail兩個(gè)指針就可以指到p上而不再是NULL,也就是不再為空 if(head==NULL) head=p;//就一步就是上面說的頭指針指向p而不是NULL,這一步只執(zhí)行一次else tail->next=p;//頭指針指向了鏈表頭部后不再移動(dòng),尾指針則不斷移動(dòng),從而使得整個(gè)鏈表不斷往后延伸,如果沒有這一步鏈表不會(huì)往下延伸,只有最開始的一個(gè) tail = p;//tail在這里就相當(dāng)于火炬手,需要把火炬(即p指針)傳下去,p是不斷在更新的。 //它一更新即p = (struct node *) malloc(sizeof(node)),就轉(zhuǎn)世重生沒了記憶,不知道自己是誰,自己在哪,這時(shí)只有tail可以挽救它,把它傳遞下去。如果沒看懂在紙上稍微畫一下,按照上面的流程推一推。
strcpy詳見strcpy函數(shù)
③的操作可以不斷重復(fù)用來延長鏈表。
實(shí)例:查詢成績(鏈表)
總結(jié)
- 上一篇: 人事管理系统 数据流图_中国移动集中化人
- 下一篇: 为什么一定情况下scanf比cin快