数据结构之链表(1) 1。实现链表的尾插 图形结构示意图 slist.h 1234567891011121314151617#define _CRT_SECURE_NO_WARNINGS 1#pragma once#include<stdio.h>#include<stdlib.h>typedef int slistdate;//对int重命名,只会方便把int改成double或其他数据类型struct slistnode{ slistdate date;// struct slistnode*next;//指针地址,指向下一个节点};typedef struct slistnode slistnode;//方便写void slistpushback(slistnode**pphead, slistdate x);//尾插void slistprint(slistnode*phead); slist.c 12345678910111213141516171819202122232425262728293031323334353637#define _CRT_SECURE_NO_WARNINGS 1#include"slist.h"void slistprint(slistnode*phead){ slistnode*cur = phead; while (cur != NULL)//遍历是cur不等于空就往下走,走到尾部还不等于空,走到下一个节点,是空的 { printf("%d->", cur->date); cur = cur->next;//cur指向下一个指针 } printf("NULL\n");}void slistpushback(slistnode**pphead, slistdate x){ slistnode*newnode = (slistnode*)malloc(sizeof(slistnode));// 要尾插就要动态开辟一个节点出来 newnode->date = x;//将newnode初始化 newnode->next = NULL;//把next赋值为空 //那么我们这个时候要找尾 //找到尾节点的指针 if (*pphead == NULL) { *pphead = newnode;} else { slistnode*tail = *pphead;//我们要让tail走到尾部去,而非走到空 while (tail->next != NULL) { tail = tail->next; }//找到了尾节点,链接新节点 tail->next=newnode; } } text.c 12345678910111213141516171819202122#define _CRT_SECURE_NO_WARNINGS 1#include"slist.h"//链表的概念及结构//链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑结构是通过链表中的指针来链接void testslist(){ slistnode*plist = NULL;//一开始定义一个指针,但啥都没有,所以先赋值空指针 slistpushback(&plist, 1);//尾插//也要传地址才可以,实参传给形参,形参是实参的临时拷贝 slistpushback(&plist, 2); slistpushback(&plist, 3); slistpushback(&plist, 4); slistprint(plist);}int main(){ //需要定义一个指针指向头部 testslist(); return 0;} 链表 #数据结构 数据结构之链表(1) http://example.com/2021/11/01/数据结构之链表(1)/ 作者 Zevin 发布于 2021年11月1日 许可协议 小练习 上一篇 矩阵相关练习 下一篇 Please enable JavaScript to view the comments