阅读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++能做的
服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等
领取专属 10元无门槛券
私享最新 技术干货