单链表的整表建立__头插法(逆序输出)(不推荐)——中职

news/2024/7/20 3:27:09 标签: 链表, 指针, 单链表, 小程序

本程序为提供可执行链表的必要环节,所以单独拎出来。
理解即可

头插法(逆序输出)(不推荐)

/*
本程序为提供可执行链表的必要环节,所以单独拎出来。
理解即可

头插法(逆序输出)(不推荐)
*/

//头文件
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

//结构
typedef struct List																//单链表的结构
{
	int data;																	//单链表的数据域
	struct List *NEXT;															//单链表指针
}Sqlist, *PList;

//函数声明
PList List_initialize(void);													//初始化单链表
void List_valuation(PList);														//用户自定义开辟结点数量和对每个结点的赋值

//函数区
PList List_initialize(void)														//初始化单链表
{
	PList PHead = NULL;															//将头结点挂起

	PHead = (PList)malloc(sizeof(Sqlist));										//开辟头结点
	if (NULL == PHead)															//判断是否开辟成功
	{
		printf("初始化链表失败,检查程序\n");									//提醒用户开辟状态
		exit(1);																//非正常退出程序
	}

	PHead->NEXT = NULL;															//将头结点挂起

	return PHead;																//返回开辟成功的头指针
}

void List_valuation(PList PHead)												//用户自定义开辟结点数量和对每个结点的赋值
{
	PList PTail = NULL;															//用于操作链表指针
	PList PNew = NULL;															//用于开辟新结点的指针
	int i, len, val;

	printf("输入要开辟的结点个数:");
	scanf_s("%d", &len);														//输入要开辟的个数

	PTail = PHead;																//将头指针赋给PTail,注意不能写成PTail = PHead->NEXT,因为PHead->NEXT为NULL

	for (i = 1;i <= len;i++)													//建立链表
	{
		printf("输入第%d个结点的值:", i);
		scanf_s("%d", &val);													//依次输入各个结点的值

		PNew = (PList)malloc(sizeof(Sqlist));									//开辟新结点
		if (NULL == PNew)														//如果分配失败
		{
			printf("初始化赋值时,建立新结点失败,检查程序!\n");				//显示错误位置,方便检查
			exit(1);															//非正常终止程序
		}

		PNew->data = val;														//使新结点的数据域赋值
		PNew->NEXT = NULL;														//使新结点的指针域挂起
		PNew->NEXT = PTail->NEXT;												//将新结点挂在表头
		PTail->NEXT = PNew;														//使PTail指向新结点
	}
}

void List_output(PList PHead)													//单链表的输出
{
	PList PTail = NULL;															//用于操作链表指针

	PTail = PHead->NEXT;														//将第一个结点的位置赋给PTail

	printf("\n当前链表的值为:");
	while (NULL != PTail)														//当前结点不为空
	{
		printf("%d ", PTail->data);												//输出当前结点的数据域
		PTail = PTail->NEXT;													//使PTail指向下一个结点
	}

	printf("\n");
}

//主函数
int main(void)
{
	PList PHead = NULL;															//头结点挂起

	PHead = List_initialize();													//初始化单链表
	List_valuation(PHead);														//用户自定义开辟结点数量和对每个结点的赋值
	List_output(PHead);															//单链表的输出

	return 0;
}

注意,头插法如果正常头结点开始则结果是逆序输出,它的算法是

		PNew->data = val;														//使新结点的数据域赋值
		PNew->NEXT = NULL;														//使新结点的指针域挂起
		PNew->NEXT = PTail->NEXT;												//将新结点挂在表头
		PTail->NEXT = PNew;		

小工具,希望对你有所帮助

感谢观看

再次感谢~


http://www.niftyadmin.cn/n/1543200.html

相关文章

html2canvaces用法,js截屏并且下载

1、首先自己下载引入html2canvaces和jquery&#xff08;我的demo路径是自己本地的&#xff09; 2、点击截屏按钮后&#xff0c;跳出层的其他部分是取消保存&#xff0c;点击截取获得的图片区域&#xff0c;表示保存 <!DOCTYPE > <html> <head> <title>…

UML图

一、概念描述 什么是类图&#xff1f; 类图用于显示类、接口以及它们之间的静态结构和关系&#xff0c;用于描述系统的结构化设计。 类图描述系统中类的静态结构&#xff0c;不仅定义系统中的类&#xff0c;表示类之间的联系如关联、依赖、聚合等&#xff0c;也包括类的内部结构…

原生js arguments 用法

http://note.youdao.com/noteshare?idfcd201e872e1ede16ce0057a1909f613转载于:https://www.cnblogs.com/chabai/p/6208334.html

8天入门wpf(转)

8天入门wpf—— 第一天 基础概念介绍 8天入门wpf—— 第二天 xaml详解 8天入门wpf—— 第三天 样式 8天入门wpf—— 第四天 模板 8天入门wpf—— 第五天 数据绑定 8天入门wpf—— 第六天 细说控件 8天入门wpf—— 第七天 画刷 8天入门wpf—— 第八天 最后的补充 WPF 一个MVVM的…

用Java实现菱形的打印输出

import java.util.Scanner;public class dengyao2 {public dengyao2() {super();}public static void main(String[] args) {System.out.println("请输入菱形的边长&#xff1a;");Scanner input new Scanner(System.in);if (input.hasNextInt()) {int a input.nex…

牛客:剑指offer:两个链表的第一个公共结点(Java)

题目&#xff1a; 看到这个题&#xff0c;我想到的就是最笨的办法&#xff0c;先遍历两个链表&#xff0c;算出各自的长度&#xff0c;然后让长的链表先走Math.abs(l1-l2)步&#xff0c;然后两个指针再一起走&#xff0c;当指向同一个节点时就找到了公共节点。 虽然觉得这个办…

js切换不同的div的颜色

四个div&#xff0c;点击一个变色&#xff0c;其他的不变色&#xff0c;效果如图&#xff1a; 代码如下 &#xff1a; <!DOCTYPE html> <html> <head> <script>window.onload function(){var divs document.getElementsByTagName("div");v…

系统无法开始服务器进程。请检查用户名和密码。 (Exception from HRESULT: 0x8000401A)...

开始-运行-cmd,输入aspnet_regiis.exe -i 重新注册iis或者出现以下错误&#xff1a;检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败&#xff0c;原因是出现以下错误: 8000401a 因为配置标识不正确&#xff0c;系统无法开始服务器进程。请检查用…