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);
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
转存中…(img-uWhjXBSo-1710818508825)]
[外链图片转存中…(img-VJg90wUI-1710818508825)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-lyua0qTv-1710818508825)]