链表知识(c语言)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37960402/article/details/87816263

最近在为找工作面试做准备,打算补一补数据结构方面的知识。

链表种类:单向链表、单向循环链表、双向链表、双向循环链表
链表的结构: 在这里插入图片描述

data(数据) next(下一个节点的地址)

基本知识:
1、head:指向第一个节点
2、tail:指向最后一个节点
3、链表的最后一个节点的next总是为空

C/C++:采用”指针+结构体“来实现链表
python:采用”引用+类“实现链表

例1、首先我们要知道如何创建一个链表:
在这里插入图片描述
c语言:

#include <stdio.h>               //头文件
struct ListNode{              
        int val;                        //存储元素数据域
        struct ListNode *next;    //存储下一个节点的指针域
};
int main()
{
    struct ListNode a;               //定义节点信息
	struct ListNode b;
	struct ListNode c;
	struct ListNode d;
	struct ListNode e;
	a.val=10;                         //元素信息
	b.val=20;
	c.val=30;
	d.val=40;
	e.val=50;
	a.next=&b;
	b.next=&c;
	c.next=&d;
	d.next=&e;
	e.next=NULL;             //最后一个元素的next为空
	struct ListNode *head=&a;
	while(head){                   //遍历元素
		printf ("%d\n",head ->val);
		head=head->next;
	}
	return 0;
}

结果
 在这里插入图片描述
例题2----链表逆序
在这里插入图片描述
这里的思路
1、创建一个新的链表
循环
2.1、依次遍历每一个节点head
2.2、将每一个节点后的数据即head ->next存放在temp中
2.3、将head ->next=new_head
在这里插入图片描述

第一次循环遍历
在这里插入图片描述
在这里插入图片描述
~~~~~~~~~~~~
在这里插入图片描述
由此链表的逆序主要包含三个步骤(一断一连两头改)
1、切断head后面的联系,将head后面的内容放在temp中
temp=head ->next
2、将head与新链表的new_head相连
head->next=new_head
3、两头改,head和new_head的指针重新赋值
new_head=head
head=temp

c语言代码-链表逆序
#include <stdio.h>

struct ListNode{
        int val;
        struct ListNode *next;    
};
struct ListNode *new_head = NULL;

struct ListNode *reverse(struct ListNode *head)
{
while(head){
	struct ListNode *temp=head ->next;
	head ->next=new_head;
	new_head=head;
	head=temp;}
	return new_head;
}
int main()
{
    struct ListNode a ;
	struct ListNode b ;
	struct ListNode c ;
	struct ListNode d ;
	struct ListNode e ;

	a.val=10;
	b.val=20;
	c.val=30;
	d.val=40;
	e.val=50;
	a.next=&b;
	b.next=&c;
	c.next=&d;
	d.next=&e;
	e.next=NULL;
	struct ListNode *head=&a;
	new_head=reverse(head);
	while(new_head){
	printf("%d\n",new_head ->val);
	new_head=new_head ->next;
	} 
   return 0;
}

结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37960402/article/details/87816263