单链表的实现
链表的基本结构
#pragma once
#include<stdio.h>
#include<stlib.h>
typedf int SLTDataType;
typedy struct SListNode
{
SLTDataType data;
struct SListNode*next;
}SLTNode;
void Slisprint(SLTNode*phead);
void SListPushBack(SLTNode**pphead,SLTDateType x)
打印链表
#include<stdio.h>
void SListPrint(SLTNode*phead)
//phead是以个指针指向链表的第一个节点;
{
SLTNode*cur=phead;
while(cur!=NULL)
{
printf("%d->",cur->data);
//若不为空则打印此节点的值
cur=cur->next;
//让cur走向下一个节点
}
}
注释
能让cur走向下一节点的原因
cur=cur->next;
一个节点储存一个数据,并存储一个指针指向下一节点的数据的地址;
cur=cur->next为将cur获取next的地址并赋给cur
#include<stdio.h>
#include<stdlib.h>
void SListPrint(SLTNode*phead)
//phead是以个指针指向链表的第一个节点;
{
SLTNode*cur=phead;
while(cur!=NULL)
{
printf("%d->",cur->data);
//若不为空则打印此节点的值
cur=cur->next;
//让cur走向下一个节点
}
}
void SListPushBack(SLTNode**pphead,SLTDateType x)
{
SLTNode*newnode =(SLTNode*) malloc(sizeof(SLTNode));
newnode->date=x;
newnode->next=NULL;
if(*pphead==NULL)
{
*pphead=newnode;
}
else
{
//找到尾节点
SLTNode*tail=phead;
while(tail->next==NULL)
{
tail=tail->next;
}
tail->next=newnode;
}
}
在链表尾部插入一个新节点
#pragma once
#include<stdio.h>
#include<stlib.h>
typedf int SLTDataType;
typedy struct SListNode
{
SLTDataType data;
struct SListNode*next;
}SLTNode;
void Slisprint(SLTNode*phead);
void SListPushBack(SLTNode**pphead,SLTDateType x)
void TestSList1()
{
SListPushBack(&plist,1);
SListPushBack(&plist,2)
SListPushBack(&plist,3)
SListPushBack(&plist,4)
SListPrinnt(plist);
}
int main()
{
TestSList1();
return 0;
}