当前位置: 代码网 > it编程>数据库>Mysql > 2024-4-8 【链表】【】(1)

2024-4-8 【链表】【】(1)

2024年08月06日 Mysql 我要评论
本文从基础到高级再到实战,由浅入深,把MySQL讲的清清楚楚,明明白白,这应该是我目前为止看到过最好的有关MySQL的学习笔记了,我相信如果你把这份笔记认真看完后,无论是工作中碰到的问题还是被面试官问到的问题都能迎刃而解!MySQL50道高频面试题整理:《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

long num;

float score;

struct student *next;

};

int main()

{

struct student a,b,c,*head,*p;

a.num=34341; a.score=81.5;

b.num=34341; b.score=81.5;

c.num=34341; c.score=81.5;

head=&a;

a.next=&b;

b.next=&c;

c.next=null;

p=head;

do

{

cout<num<<" "<score<<endl;

p=p->next;

}while(p!=null);

getchar();

}

处理动态链表的函数

1.malloc

函数原型为

void *malloc(unsigned int size);

作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数返回的是一个指向分配域起始地址的指针,如果此函数未能成功地执行(如内存空间不足),则返回空指针(null)。

2.calloc

函数原型为

void *calloc(unsigned n,unsigned size);

作用是在内存的动态存储区中分配n个长度为size的连续空间。函数返回一个指向分配域起始地址的指针;如果分配不成功,则返回null。

3.free()

函数原型为

void free(void *p);

作用是释放由p指向的内存区,使这部分内存区能被其他变量使用。

动态链表的准备工作

一个完善的动态链表程序应该具有以下基本功能:建立链表,插入结点,删除结点,打印链表,释放链表等。扩展的动态链表程序还可能有获得链表长度,获得当前结点,查找结点位置,连续两个链表,比较两个链表等功能。下面将逐个实现其功能代码。

为了程序的易读性和可扩展性,有时需要在程序开头先进行预定义处理,请务必领会下面的代码用意,否则将影响对以后代码的理解

#include<stdlib.h>

#include<stdio.h>

typedef int elemtype; //以 elemtype 代表 int 型数据

typedef struct list *link; //以 link 代表链表指针

typedef struct list lnode; //以 lnode 代表链表结点

struct list

{

elemtype data; //此处仅以一个整型变量为例

struct list *next;

};

主函数的建立:下面的主函数只是一个简单调用各功能的示范例子,读者可自行修改和添加代码以完成更复杂的任务。请根据主函数的代码考虑各功能子函数的原型应如何建立。

int main()

{

int l;

link head1;

link head2;

head1=create(head1); //建立链表1

head2=create(head2); //建立链表2

connect(head1,head2); //连接两个链表

head1=insert(head1,888,5); //在位置5处插入元素888

head1=del(head1,3); //删除一个结点

display(head1); //打印链表

printf(“\n lenth is %d\n”,lenth(head1)); //打印链表长度

printf(“\n get is %d\n”,get(head1,3)); //获得当前结点值

printf(“\n locate 12 is %d”,lenth(head1,12)); //查找元素12所在的位置

head=setnull(head); //释放链表

}

链表的建立

由主函数调用create()函数的方式可知,该函数应该返回一个结点的指针,输入的参数也应该是一个结点指针,参考代码如下:

link create(link head)

{

elemtype newdata;

link newpoint;

//先创建一个结点

head=(link)malloc(sizeof(lnoed));

printf(“please input number :\n”);

scanf(“%d”,&newdata);

head->data=newdata; //结点赋值

head->next=null; //结点指向空地址

while(1) //继续添加结点

{

newpoint=(link)malloc(sizeof(lnode));//开辟一个结点空间

if(newpoint==null){//如果开辟空间失败,则返回

break;//此判断语句在某些类型的竞赛中用处不大,可忽略

}

printf(“please input number : input ‘-1’ means exit\n”);

scanf(“%d”,&newdata);

if(newdata==-1){ //输入-1则添加结点结束并返回head

return head;

}

newpoint->data=newdata;

newpoint->next=head;

head=newpoint;

}

return head;

}

链表的显示

该子函数无返回值,输入参数为链表的头指针,请考虑:指针p的作用是什么?如果不用指针p,直接用head这个指针会出现什么后果?

void display(link head)

{
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、oppo等大厂,18年进入阿里一直到现在。

深知大多数java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注java获取)

img

总结

本文从基础到高级再到实战,由浅入深,把mysql讲的清清楚楚,明明白白,这应该是我目前为止看到过最好的有关mysql的学习笔记了,我相信如果你把这份笔记认真看完后,无论是工作中碰到的问题还是被面试官问到的问题都能迎刃而解!

mysql50道高频面试题整理:

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》

总结

本文从基础到高级再到实战,由浅入深,把mysql讲的清清楚楚,明明白白,这应该是我目前为止看到过最好的有关mysql的学习笔记了,我相信如果你把这份笔记认真看完后,无论是工作中碰到的问题还是被面试官问到的问题都能迎刃而解!

mysql50道高频面试题整理:

[外链图片转存中…(img-piywusnr-1713041772971)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com