#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node *next;
}LNode,*LinkList;
bool InitList(LinkList &L){ //不带头结点
L=NULL;
return true;
}
LinkList List_HeadInsert(LinkList &L){ //头插法
LNode *s;
int x;
InitList(L);
while(~scanf("%d",&x)){
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
s->next=NULL;
if(L==NULL){ //第一个插入点特判
L=s;
}
else{
s->next=L;
L=s;
}
}
return L;
}
LinkList List_TailInsert(LinkList &L){
LNode *s,*r; //用r来指示链表尾部
int x;
InitList(L);
while(~scanf("%d",&x)){
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
if(L==NULL){ //第一个插入点特判
//r指向最后一个结点
L=s;
r=s;
}
else{
r->next=s;
r=s;
}
}
r->next=NULL;
return L;
}
void PrintList(LinkList &L){ //打印链表
//这里用指针p指向链表的头,而不是直接用L进行遍历防止丢失头结点
LNode *p=L;
while(p!=NULL){
printf("%d ",p->data);
p=p->next;
}
}
void FreeLink(LinkList L){ //销毁链表,动态分配的内存需要手动释放
LNode *s=L;
while(s!=NULL){
L=s->next;
delete(s);
s=L;
}
}
int main(){
LinkList L;
//List_HeadInsert(L);
List_TailInsert(L);
PrintList(L);
FreeLink(L);
return 0;
}
单链表C语言实现(不带头结点)
C语言实现链表操作:初始化、头插法、尾插法、打印及销毁
最新推荐文章于 2023-02-13 23:46:44 发布
这篇博客介绍了如何使用C语言实现链表的基本操作,包括不带头结点的链表初始化、头插法插入元素、尾插法插入元素、打印链表内容以及销毁链表。示例代码详细展示了每个操作的过程,适合初学者学习链表基础知识。
1万+





