您好,登錄后才能下訂單哦!
這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)中鏈表的接口函數(shù)怎么使用的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)中鏈表的接口函數(shù)怎么使用文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。
slist.h文件
#pragma once #include<stdio.h> #include<stdlib.h> //一個(gè)一個(gè)按需向堆上申請(qǐng)內(nèi)存 typedef int SListDateType; //鏈?zhǔn)浇Y(jié)構(gòu)體的名稱重定義為SListNode,這個(gè)SListNode表示一個(gè)結(jié)構(gòu)體 //這個(gè)項(xiàng)目中使用到的這個(gè)結(jié)構(gòu)體的一個(gè)全局變量是SLTNode。 typedef struct SListNode { SListDateType data; struct SListNode* next; }SLTNode; void SListPrint(SLTNode*phead);//phea表示指向第一個(gè)結(jié)點(diǎn)的頭指針 void PushBack(SLTNode**phead,SListDateType x);//尾插 void PushFront(SLTNode**phead,SListDateType x);//頭插 void PopBack(SLTNode**phead); void PopFront(SLTNode**phead);
slist.c文件
#include"Slist.h" #include<stdlib.h> //鏈?zhǔn)浇Y(jié)構(gòu)體的名稱重定義為SListNode,這個(gè)SListNode表示一個(gè)結(jié)構(gòu)體 //這個(gè)項(xiàng)目中使用到的這個(gè)結(jié)構(gòu)體的一個(gè)全局變量是SLTNode。 void SListPrint(SLTNode*phead) { SLTNode* cur=phead;//用一個(gè)表示地址的指針去指向他 while(cur!=NULL) { printf("%d ",cur->data);//cur是一個(gè)指向地址的變量,,稱為指針變量 cur=cur->next; } printf("\n"); } void PushBack(SLTNode**phead,SListDateType x)//尾插 { //如果鏈表為空,沒有尾結(jié)點(diǎn)的話,建一個(gè)newnode SLTNode* newnode; newnode=(SLTNode*)malloc(sizeof(SLTNode));//這三行的意思是創(chuàng)立一個(gè)新的結(jié)點(diǎn),這三行可以專門做成一個(gè)函數(shù) newnode->data=x; newnode->next=NULL; //如果鏈表為空,沒有尾結(jié)點(diǎn)的話,建一個(gè)newnode if(*phead==NULL) { *phead=newnode; } else { //找到尾節(jié)點(diǎn) SLTNode*tail=*phead; while(tail->next!=NULL) { tail=tail->next; } tail->next=newnode; } } void PushFront(SLTNode**phead,SListDateType x)//頭插 { SLTNode* newnode; newnode=(SLTNode*)malloc(sizeof(SLTNode));//創(chuàng)立新結(jié)點(diǎn) newnode->data=x; newnode->next=NULL; newnode->next=*phead; *phead=newnode; } void PopBack(SLTNode**phead)//尾刪 { SLTNode*tail; SLTNode*prev; tail=*phead; prev=NULL; if(*phead==NULL) { return; } while(tail->next!=NULL) { prev=tail; tail=tail->next; } free(tail); tail=NULL; prev->next=NULL; } void PopFront(SLTNode**phead)//頭刪 { if(!(*phead)) { return ; } else{ SLTNode*next=(*phead)->next; free(*phead); *phead=next; } //else //{ // tail=*phead;//plist // tail=tail->next; // *phead=tail; // free(tail); //} } SLTNode*SListFind(SLTNode*phead,SListDateType x)//查找 { SLTNode*cur=phead; while(cur)//遍歷 { if(cur->data==x) { return cur; } else { cur=cur->next; } } return NULL; } void SListInsert(SLTNode**phead,SLTNode*pose,SListDateType x)//插入 { } void SListErase(SLTNode**phead,SLTNode*pose);//刪除 void SListDestory(SLTNode**phead);//摧毀
test.c函數(shù)
#include<stdio.h> #include"Slist.h" //形參的改變不影響實(shí)參 void testslist1() { SLTNode*plist=NULL;//不需要初始化 直接給個(gè)空就可以 //形參的改變不影響實(shí)參 PushBack(&plist,1); PushBack(&plist,2); PushBack(&plist,3); PushBack(&plist,4); SListPrint(plist); PushFront(&plist,1); PushFront(&plist,2); PushFront(&plist,3); PushFront(&plist,4); SListPrint(plist); PopBack(&plist); PopBack(&plist); PopBack(&plist); SListPrint(plist); PopFront(&plist); SListPrint(plist); } int main() { testslist1(); return 0; }
關(guān)于“C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)中鏈表的接口函數(shù)怎么使用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)中鏈表的接口函數(shù)怎么使用”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。