首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

阅读C语言编程基础学习——链表详解,在给大家分享这个操作之前,小编推荐大家加一下这个裙:五六七六二五六六八!大家遇到啥问题都会在里面交流!而且分享十年开发经验牛人经验分享课一整套!是个非常好的学习交流地方!也有程序员大神给大家热心解答各种问题!很快满员了。欲进从速哦!等大家加入学习交流基地哦关于C语言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。

静态链表:

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);

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;

}

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

//{

// pTemp = pTemp->pNext;

//}

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

while (pTemp->pNext != NULL)

{

pTemp = pTemp->pNext;

}

pNew->pNext = NULL;

pTemp->pNext = pNew;

count++; //节点数

}

在中心插入

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

void InsertAtMid(structstudents *pHead, intindex)

{

//新建一个节点

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

structstudents *pNew;

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

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

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

structstudents *pTemp;

structstudents *pPre;

pTemp = pHead;

pPre = pHead;

for (int i = 1; i

{

pPre = pTemp;

pTemp = pTemp->pNext;

}

pPre->pNext = pNew;

pNew->pNext = pTemp;

count++;

}

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

这些是C/C++能做的

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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180307A15BEJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券