ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

初学者学习链表应该看的第一篇文章(c语言)

2021-12-14 21:58:58  阅读:157  来源: 互联网

标签:current head 第一篇 next 链表 初学者 NULL Film


链表是基于将多个结构体连接在一起,可以使用一个指向链表的指针访问链表中存储的信息。

 每一个方块代表了一个结构体,比如我们可以这样来定义一个结构体:

struct node{
    int val;
    struct node*next;
};

该结构体可以储存一个int量,还有一个指向该类型结构体的指针。

我们可以在具体的程序中看看链表是如何实现的:

#include <stdio.h>  
#include<stdlib.h>  //提供malloc函数;
#include<string.h>  //提供字符串函数strcpy

typedef struct film {  //typedef让struct film可以用Film代替。 
	char title[20];
	struct film* next;
}Film;

int main() {
	Film* head = NULL;//创造出一个头指针,指向链表的第一项
	Film* current = NULL;//current指针是为了方便对链表进行操作
	Film* tail = NULL;//tail指针始终指向链表的最后一个元素可以对链表加项
	char input[20];
	puts("enter the first movie title");
	while (fgets(input, 20, stdin) != NULL && input[0] != '!') {
		current = (Film*)malloc(sizeof(Film)); 
		strcpy(current->title, input);
		if (head == NULL) { /*如果head指针是NULL的那证明还没有项加入链表中,那就让head指向第一项*/
			head = current;
		}
		else {
			tail->next = current; //将current接到链表的尾部
		}
		current->next = NULL;
		tail = current;//让tail指针重新指向最后一项
		puts("enter the next movie title or input ! to stop");
	}

	current = head; //让current指向第一个元素,打印每个结构体含有的title
	while (current != NULL) {
		printf("%s", current->title);
		current = current->next;
	}
    //释放空间
	current = head;
	while (current != NULL) {
		head = current->next;
		free(current);
		current = head;
	}
	puts("finished!");
	return 0;
}

 这样我们就利用链表实现了简单的功能,但是还存在许多缺点,比如无法实现删除某个节点,而且该代码只是带大家初步认识链表,后续还会为大家带来更为深入的链表知识。

标签:current,head,第一篇,next,链表,初学者,NULL,Film
来源: https://blog.csdn.net/IT_lzer/article/details/121939855

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有