C语言编程基础学习——链表详解!

静态链表:structstudents stu1 = { 1, "a", NULL };structstudents stu2 = { 2, "b", NULL };structstudents st

C语言是面向过程的,而C++是面向对象的

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

C语言编程基础学习——链表详解!

链表:

一系列构造连在一起,每一个构造体变量里面都有一个指针pNext,pNext指向下一个构造体变量,尾节点的pNext指向NULL。

C语言编程基础学习——链表详解!

静态链表:

structstudents stu1 = { 1, “a”, NULL };

structstudents stu2 = { 2, “b”, NULL };

structstudents stu3 = { 3, “c”, NULL };

stu3.pNext = &stu2;

stu2.pNext = &stu1;

动态内存分配:

Malloc();

void *malloc(unsigned int size)

这个函数在内存中动态斥地一块内存,unsigned int size抉择内存的巨细,void *空指针可以强迫转换为任何类型的指针。

这个函数前往一个指针,这个指针就是斥地的内存地点。

pHead = (structstudents*)malloc(sizeof(structstudents));

free();

void free(void *ptr)

free:释放内存。

free(pHead);

C语言编程基础学习——链表详解!

1、若何来建树一个链表。

建树一块内存:

struct students *pHead = NULL; //头指针

struct students *pEnd = NULL; //尾指针

pHead = (struct students *)malloc(sizeof(struct students)); //斥地头结点

printf(“请输入一个门生的学号和姓名: “);

scanf(“%d%s”, &pHead->number, pHead->name);

pHead->pNext = NULL;

printf(“%d “, pHead->number);

增:

1、头部添加:头结点会变 必要前往一个pHead。

2、新节点的pNext指向pHead。

3、pHead指向pNew。

注意:2和3不能逆序。

//在头部插入一个节点

structstudents *InsertAtHead(structstudents *pHead)

{

//新建一个节点

printf(” 在头部插入一个节点 “);

structstudents *pNew;

pNew = (structstudents*)malloc(sizeof(structstudents));

printf(“请输入新门生的信息! “);

scanf(“%d%s”, &pNew->number, pNew->name);

pNew->pNext = pHead; //让新节点的pNext-》本来的头结点。

pHead = pNew; //把pHead指向新节点

count++; //节点数+1

returnpHead;

}

C语言编程基础学习——链表详解!

2、在尾部插入一个节点。

1、建树一个节点pNew

2、顶一个中心的指针pTemp 经由过程轮回(前提为pTemp->pNext!=null).获得尾节点。

3、pTemp->pNext=pNew;

pNew->pNext=NULL;

在尾部插入一个节点

void InsertAtEnd(structstudents *pHead)

{

//新建一个节点

printf(” 在尾部插入一个节点 “);

structstudents *pNew;

pNew = (structstudents*)malloc(sizeof(structstudents));

printf(“请输入新门生的信息! “);

scanf(“%d%s”, &pNew->number, pNew->name);

structstudents *pTemp;

pTemp = pHead;

//for (int i = 1; i < count; i++) //节点数的值

//{

// pTemp = pTemp->pNext;

//}

//for (; pTemp->pNext != NULL; pTemp = pTemp->pNext);

while (pTemp->pNext != NULL)

{

pTemp = pTemp->pNext;

}

pNew->pNext = NULL;

pTemp->pNext = pNew;

count++; //节点数

}

C语言编程基础学习——链表详解!

在中心插入

//在中心(第几个节点之后)插入节点

void InsertAtMid(structstudents *pHead, intindex)

{

//新建一个节点

printf(” 在第%d个节点后插入一个节点 “,index);

structstudents *pNew;

pNew = (structstudents*)malloc(sizeof(structstudents));

printf(“请输入新门生的信息! “);

C语言编程基础学习——链表详解!

scanf(“%d%s”, &pNew->number, pNew->name);

structstudents *pTemp;

structstudents *pPre;

pTemp = pHead;

pPre = pHead;

for (int i = 1; i < index+1; i++) //假设index=2 必要轮回2次

{

pPre = pTemp;

pTemp = pTemp->pNext;

}

pPre->pNext = pNew;

pNew->pNext = pTemp;

count++;

}

C语言编程基础学习——链表详解!

今天小编就详解到这了哦!感激打动大师的分享,小编会连续更新完C说话根本的所有章节!爱好的读者请关注并转发!留言在评论区,小编看到了会回覆大师!

这些是C/C++能做的

服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/75960.html

(0)
上一篇 2024年 10月 3日 上午5:48
下一篇 2024年 10月 3日 上午6:29

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信