C语言学习笔记--单向链表Markdown版本

一.链表的概念:

1.如果结构体成员变量中有指向相同类节点的指针变量,那么就能够将一个个的解构
具体的变串连起来,这样的一系列节点形象上像一条链子,我们称之为链表
2.每个节点都有两部分组成:数据区+地址区(指向自身结构体的指针变量)
3.其中指向自身类型节点的指针,我们称之为地址域
4.最后一个节点没有下一个节点,地址域赋值为NULL

二.链表的特征

1.(单)链表:必须有链表头pHeader;
2.通过链表头,可以顺次向下访问所有的节点
3.如果是空链表链表头为0,pHeader=NULL;
4.链表尾节点:类似于null结尾的字符串,最后一个节点的指针pNext==0
5.可以在任意位置插入和删除节点。

#include <stdio.h>
#include <stdlib.h>

typedef int DATA;

struct SNode
{
	DATA data;//数据区域
	SNode* pNext;//指针区域
};
SNode *g_pHead = NULL;
void AddHead(DATA data)
{
	SNode *p = (SNode*)malloc(sizeof(SNode));
	p->data = data;
	p->pNext = g_pHead;
	g_pHead = p;
}
void AddTail(DATA data)
{

}
void Delete(DATA data)
{

}
//指定节点修改数据
void Modify(DATA data, DATA newData)
{
	SNode * p = g_pHead;
	while (p)
	{
		if (p->data == data)
			p->data = newData;
		p = p->pNext;
	}
}
int Find(DATA data)
{
	SNode * p = g_pHead;
	while (p)
	{
		if (p->data == data)
			return 1;
		p = p->pNext;
	}

	return 0;
}
void Print()
{
	SNode * p = g_pHead;
	while (p)
	{
		printf("%d", p->data);
		p = p->pNext;
	}
	
}
int main()
{
	AddHead(3);
	AddHead(2);
	AddHead(1);
	puts("修改前");
	Print();

	Modify(2, -888);
	puts("修改后:");
	Print();
	if (Find(-888))
	{
		puts("查找成功");
	}
	else
	{
		puts("查找失败");
	}
	return 0;
}
posted @ 2020-05-16 09:20  Tamias  阅读(240)  评论(0编辑  收藏  举报