对于链表,栈,队列,树函数参数的理解(未完)
来源:互联网 发布:网络伤感歌曲打包下载 编辑:程序博客网 时间:2024/05/01 03:02
对于最近学习的链表,栈,队列,二叉树(基础)的函数参数有了更深的理解。
对于这几个数据结构,可以采用静态,或者是链式存储和操作,但是它们函数的参数却是不一样的。
对于一些链式存储和操作的,有3种方法来返回头指针
1 在函数外新建头指针,然后函数返回头指针
2 用二级指针
3 用参数的引用(效果和二级指针一样)
链表(静态):
<span style="font-size:14px;">typedef struct list{ int *base;//数组指针 int lengh;//当前表的长度 int listsize;//空间大小}qlist;//初始化////此处用的是&l相当于传入l的地址,作用类似于传递指向l的指针void creat_(qlist &l,int initsize)//initsize为自定义的数组长度,需要把它负值给listsize;{ l.base=(int*)malloc(initsize*sizeof(int));//开辟了一个int数组大小为initsize if(l.base==NULL) { cout<<"分配内存失败"; } l.lengh=0;//置为空表 l.listsize=initsize;//当前空间大小}int main(){ qlist q;}</span>此处传递的是struct list q,对于静态分配的,即是用数组表示的,所以它不要用指针指向a[0],只需要lengh来表示当前的长度即可,所以它不需要二级指针,或者是参数引用
链表(动态1参数的引用):
<span style="font-size:14px;">typedef struct node{ int a; struct node *next;}NODE,*PNODE;//构建链表void creat_(PNODE &head){ PNODE q,p;//定义头指针head,代替头指针球q(头指针不能动) head=(PNODE)malloc(sizeof(NODE));//分配内存给head if(head==NULL) { printf("分配内存失败"); } head->next=NULL; int num,num_,i; scanf("%d",&num); q=head;//代替头指针q for(i=0;i<num;i++) { p=(PNODE)malloc(sizeof(NODE));//开辟一个节点,并让p指向它 scanf("%d",&num_); p->a=num_; q->next=p;//让上一个指针指向该节点(如果是第一个结点则是头指针) q=p;//q指针也指向p指针指向的结点 } q->next=NULL;}int main(){ PNODE head;}</span>
(动态2:返回新建的头指针)
<span style="font-size:14px;">typedef struct node{ int a; struct node *next;}NODE,*PNODE;//构建链表PNODE creat_(){ PNODE head,q,p;//定义头指针head,代替头指针球q(头指针不能动) head=(PNODE)malloc(sizeof(NODE));//分配内存给head if(head==NULL) { printf("分配内存失败"); } head->next=NULL; int num,num_,i; scanf("%d",&num); q=head;//代替头指针q for(i=0;i<num;i++) { p=(PNODE)malloc(sizeof(NODE));//开辟一个节点,并让p指向它 scanf("%d",&num_); p->a=num_; q->next=p;//让上一个指针指向该节点(如果是第一个结点则是头指针) q=p;//q指针也指向p指针指向的结点 } q->next=NULL; return head;}int main(){ pnode head; head=creat_();}</span>此处需要返回的是头指针,所以需要传递指针变量,而不是结构题变量
0 0
- 对于链表,栈,队列,树函数参数的理解(未完)
- 对于MySql分区的理解(未完待续)
- 对于拷贝构造函数中参数是引用的理解
- Java学习篇-------对于main函数参数的理解
- 对于Java中函数参数传递的理解
- 我个人对于面向对象程序开发的理解(未完待续)
- 对于I2C总线协议的一些理解,未完待续。。。
- 对于队列同步器AbstractQueuedSynchronizer的理解
- 对于函数重载的理解
- 对于SG函数的理解
- 对于Javascript函数的理解
- 对于核函数的理解
- 对于虚析构函数的理解
- UNIX环境编程学习笔记------编程实例-----对于 函数 inet_ntop()函数的第四个参数的理解
- 关于对于C语言中主函数参数接返回值的理解
- 对于linux下system()函数的深度理解(整理)
- 对于虚函数的真切的理解
- Java中对于main函数的理解
- Lightoj 1203
- OSVR接入HMD设备
- 第二周项目0——宣告“主权”
- 语言(Language)和语法(Syntax)简述
- 2016.9.3初中部上午NOIP普及组比赛总结
- 对于链表,栈,队列,树函数参数的理解(未完)
- Hadoop与Spark常用配置参数总结
- 利用SSH隧道技术实现跳板机SHELL登陆以及SFTP到内网服务器
- iOS-GCD学习之Group
- win7安装 Python numpy 模块
- 公历1984年2月3日23时什么时候能嫁出去
- apt-get, sudo以及git基础
- linux下java的File
- Leetcode 171. Excel Sheet Column Number