c语言-单链表(一)

定义节点:

typedef struct Node {
	int data;
	Node* pNext;
}NODE, *PNODE;

细节说明,PNode 就代表struct Node* ,上面的表单是也可以写成如下形式,含义是一样的

typedef struct Node {
	int data;
	Node* pNext;
}*PNODE,NODE ;

  

算法操作

1. 创建链表

//1.初始化链表
PNODE create_list(void) {
	int len,val;
	printf("%s", "请输入你要生成链表的长度\n");
	scanf("%d", &len);
	PNODE pHead = (PNODE)malloc(sizeof(PNODE));//创建一个头结点
	PNODE pTail = pHead;//永远指向最后一个
	pTail->pNext = NULL;
	for (int i = 0; i < len; i++)
	{
		printf("请输入第%d个变量的数值 ", i);
		scanf("%d", &val);
		PNODE p = (PNODE)malloc(sizeof(PNODE));
		if (NULL == p) {
			printf("分配内存失败");
		}
		p->data = val;
		p->pNext = NULL;

		pTail->pNext = p;//尾节点指向挂在Ptail上
		pTail = p;//pTail 就是尾节点了
	}
	return pHead;
}

2. 显示链表数据

//2.输出
void show_list(PNODE pHead) {
	PNODE p = pHead->pNext;//第一个节点地址
	while (p != NULL)
	{
		printf("%d\n", p->data);
		p = p->pNext;
	}
	printf("\n");
	return;
}

3. 运行测试

int main()
{
	PNODE pHead = NULL;//代表 Struct Node* pHead=NULL;
	pHead = create_list();//
	show_list(pHead);
	return 0;
}

  

时间: 2024-10-14 13:08:31

c语言-单链表(一)的相关文章

(转载)C语言单链表实现19个功能完全详解

最近在复习数据结构,想把数据结构里面涉及的都自己实现一下,完全是用C语言实现的. 自己编写的不是很好,大家可以参考,有错误希望帮忙指正,现在正处于编写阶段,一共将要实现19个功能.到目前我只写了一半,先传上来,大家有兴趣的可以帮忙指正,谢谢 在vs2010上面编译运行无错误. 每天都会把我写的新代码添加到这个里面.直到此链表完成. #include "stdafx.h" #include "stdio.h" #include <stdlib.h> #in

[c语言]单链表的实现

一.基础知识:链表(线性表的链式存储结构) (1)特点:逻辑关系相邻,物理位置不一定相邻. (2)分类: a.不带头节点 b.带头节点 (3)单链表的存储结构: typedef struct SListNode {  DataType data;  struct SListNode* next; }SListNode; 二.代码实现(因避开使用二级指针,所以代码中使用了c++中的引用):此处构造的为不带头节点的链表 (1)sList.h   #pragma once typedef int Da

c语言-单链表(二)

继续复习链表知识点,本章包含单链表的增加,删除,判断是否为空,和链表长度,以及链表的排序 几个知识点 1.链表的判断是否为空 //1.判断链表是否为空 bool isempty_list(PNODE pHead) { return pHead->pNext == NULL; } 2. 计算链表的长度 //2.链表长度 int length_list(PNODE pHead) { PNODE pFirst = pHead->pNext;//获取头结点 int num = 0; while (pF

c语言单链表实现

/************************************************************************* > File Name: singleLineTable.c > Author: zshh0604 > Mail: [email protected] > Created Time: 2014年10月15日 星期三 11时34分08秒 **************************************************

C语言单链表

学过线性表中的顺序表的都知道,顺序表里的数据在物理内存上是相邻的,所以当我们在顺序表中想要访问下一个元素时可以直接去访问,就像数组一样.但是单链表却不同,单链表的数据存储的位置是动态分配的,也就是说单链表的存储在物理内存上不是相邻的,所以我们就只能通过指针这种方式来把单链表串起来,通过指针来访问下一个结点. 单链表结点 单链表的结点里有数据域和指针域,数据域是用来储存数据的,指针域是用来储存直接后继结点的域. typedef struct Node{ int data;//数据域 struct

C语言单链表实现19个功能完全详解

#include "stdafx.h" #include "stdio.h" #include <stdlib.h> #include "string.h" typedef int elemType ; /************************************************************************/ /* 以下是关于线性表链接存储(单链表)操作的18种算法 */ /* 1.初始化线性

C语言单链表逆置的代码实现 (简单易懂版)

嗯,,这是自己写的第一篇博客哈,写的不好大家不要见怪,主要是想把自己的一些思想分享给大家.也欢迎大家指出错误,一同进步. 话不多说,直接先说想法.要把一个单链表逆置,可以大致分为下列几步.先创建一个链表.然后要考虑到链表的逆置实现.最后是链表的输出.有了这样过几步大概的想法之后,我们便要来一步步的实现啦.嗯,,创建链表就不说了,大家都会.  然后呢就是链表的逆置,这里我是采用的就地逆置法,,嗯,反正我是这么叫的,大家可以参考一下.当然啦,你得考虑到函数的形参和返回值以及指针的交接,这里如果出了问

C语言实现单链表节点的删除(带头结点)

我在之前一篇博客<C语言实现单链表节点的删除(不带头结点)>中具体实现了怎样在一个不带头结点的单链表的删除一个节点,在这一篇博客中我改成了带头结点的单链表.代码演示样例上传至 https://github.com/chenyufeng1991/DeleteLinkedList_HeadNode.删除类型有两种: (1)删除某个位置pos的节点: (2)推断x值是否在链表中,若存在则删除该节点: 核心代码例如以下: //删除某个位置pos的节点 Node *DeletePosNode(Node

「C语言」单链表/双向链表的建立/遍历/插入/删除

最近临近期末的C语言课程设计比平时练习作业一下难了不止一个档次,第一次接触到了C语言的框架开发,了解了View(界面层).Service(业务逻辑层).Persistence(持久化层)的分离和耦合,一种面向过程的MVC的感觉. 而这一切的基础就在于对链表的创建.删除.输出.写入文件.从文件读出...... 本篇文章在于巩固链表的基础知识(整理自<C语言程序设计教程--人民邮电出版社>第十章),只对链表的概念及增删改查作出探讨,欢迎指教. 一.链表结构和静态/动态链表 二.单链表的建立与遍历