#include<stdio.h>
#include<stdlib.h>
void ScanfList();
//节点结构体
struct Node
{
int a;
struct Node* pNext;
};
//链表头尾指针
struct Node* g_pHead = NULL;
struct Node* g_pEnd = NULL;
//创建链表,在链表中增加一个数据 头添加
void AddListHead(int a);
//遍历链表
void ScanfList();
//清空链表
void FreeList();
//头删除
void DelectListHead();
int main(void)
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
g_pHead;
int i=0;
for(i=0;i<10;i++)
{
AddListHead(a[i]);
}
ScanfList();
DelectListHead();
ScanfList();
//释放链表
FreeList();
system("pause");
return 0;
}
//头删除
void DelectListHead()
{
if(NULL == g_pHead)//链表检测
{
printf("链表为NULL,无须释放");
return;
}
struct Node* pTemp = g_pHead;
g_pHead = g_pHead->pNext;
free(pTemp);
}
//清空链表
void FreeList()
{
struct Node *pTemp = g_pHead;
while(pTemp!=NULL)
{
struct Node* pt = pTemp;
pTemp = pTemp->pNext;
free(pt);
}
//头尾清空
g_pHead = NULL;
g_pEnd = NULL;
}
//遍历链表
void ScanfList()
{
struct Node *pTemp = g_pHead;
while(pTemp!=NULL)
{
printf("%d ",pTemp->a);
pTemp = pTemp->pNext;
}
printf("\n");
}
//创建链表,在链表中增加一个数据 头添加
void AddListHead(int a)
{
//创建一个节点
struct Node* pTemp = (struct Node*)malloc(sizeof(struct Node));
//节点数据赋值
pTemp->a = a;
pTemp->pNext = NULL;
//接在链表上
if(NULL == g_pHead)
{
//链表为空,新节点既是头又是尾巴
g_pHead = pTemp;
g_pEnd = pTemp;
}
else
{
//新节点的下一个指向头
pTemp->pNext = g_pHead;
//新节点就是头了
g_pHead = pTemp;
}
}
轻松学会C语言链表之 “头添加” 和 “头删除”
最新推荐文章于 2022-02-09 11:05:40 发布