这篇文章主要介绍了C语言数据结构中链表的接口函数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言数据结构中链表的接口函数怎么使用文章都会有所收获,下面我们一起来看看吧。
slist.h文件
#pragma once #include<stdio.h> #include<stdlib.h> //一个一个按需向堆上申请内存 typedef int SListDateType; //链式结构体的名称重定义为SListNode,这个SListNode表示一个结构体 //这个项目中使用到的这个结构体的一个全局变量是SLTNode。 typedef struct SListNode { SListDateType data; struct SListNode* next; }SLTNode; void SListPrint(SLTNode*phead);//phea表示指向第一个结点的头指针 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> //链式结构体的名称重定义为SListNode,这个SListNode表示一个结构体 //这个项目中使用到的这个结构体的一个全局变量是SLTNode。 void SListPrint(SLTNode*phead) { SLTNode* cur=phead;//用一个表示地址的指针去指向他 while(cur!=NULL) { printf("%d ",cur->data);//cur是一个指向地址的变量,,称为指针变量 cur=cur->next; } printf("\n"); } void PushBack(SLTNode**phead,SListDateType x)//尾插 { //如果链表为空,没有尾结点的话,建一个newnode SLTNode* newnode; newnode=(SLTNode*)malloc(sizeof(SLTNode));//这三行的意思是创立一个新的结点,这三行可以专门做成一个函数 newnode->data=x; newnode->next=NULL; //如果链表为空,没有尾结点的话,建一个newnode if(*phead==NULL) { *phead=newnode; } else { //找到尾节点 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));//创立新结点 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函数
#include<stdio.h> #include"Slist.h" //形参的改变不影响实参 void testslist1() { SLTNode*plist=NULL;//不需要初始化 直接给个空就可以 //形参的改变不影响实参 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; }
关于“C语言数据结构中链表的接口函数怎么使用”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C语言数据结构中链表的接口函数怎么使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。