typedef struct LinkList{
struct LinkList *next;
int data;
}LinkList;
//头插法创建单链表 不带头结点(1+1 指针数,1个保存头结点+1个遍历指针)
LinkList *creatLinkList(int n) {//创建一个含n个元素的单链表
LinkList *head = (LinkList *)malloc(sizeof(LinkList));
head->data = 0;
LinkList *q = head;
for(int i = 1;i < n;i++) {
q->next = (LinkList *)malloc(sizeof(LinkList));
q->next->data = i;
q = q->next;
}
return head;
}
//遍历单链表(不带头结点)
void PrintLinkList(LinkList *L){
while (L != NULL) {
printf("%d", L->data);
L = L->next;
}
return;
}
//单链表反转方法一: 尾插法(递归实现)(1+1 指针数,1个指针参数+1个结点指针p)
LinkList *ReverseList (LinkList *L){
LinkList *p = NULL;
if (L == NULL) return NULL; //判空
if (L->next == NULL) {
p = L;
return p; // 递归到底,返回第一个结点p
}
不带头结点的单链表反转 三种不同方法实现
最新推荐文章于 2022-04-25 21:44:18 发布
本文详细介绍了如何不带头结点的单链表进行反转,包括递归、循环和头插法三种不同的实现方式,深入理解链表操作的核心技巧。
摘要由CSDN通过智能技术生成