C语言数据结构中链表的接口函数怎么使用

这篇文章主要介绍了C语言数据结构中链表的接口函数怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言数据结构中链表的接口函数怎么使用文章都会有所收获,下面我们一起来看看吧。

成都创新互联是专业的沈阳网站建设公司,沈阳接单;提供网站制作、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行沈阳网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

slist.h文件

#pragma once
#include
#include
//一个一个按需向堆上申请内存
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
//链式结构体的名称重定义为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
#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语言数据结构中链表的接口函数怎么使用”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。


新闻标题:C语言数据结构中链表的接口函数怎么使用
转载来于:http://pwwzsj.com/article/pcpdhg.html