C语言链表的使用方法下面的程序是单链表的建立与输出,都有详细的注释,相信你能看的懂
但要想学习链表必须得掌握了一定的C语言基础
下面这个链表的作用是建立5个结点的单链表,5个结点的值输入以后,依次输出各个结点的值
#includestdio.h
#includestdlib.h
//链表的建立与输出
struct node//定义结点的类型
{
int num,score;
node*link;
};
void main()
{
node*creat(int n);//函数原型声明
void print(node*h);//函数原型声明
node*head=0;//定义链头指针并初始化
head=creat(5);//调用creat函数创建链表
print(head);//调用print函数输出链表
}
node*creat(int n)
{
node*h=0,*p,*q;
int i;
for(i=1;i=n;i++)
{
q=(node*)malloc(sizeof(node));//分配一个结点空间
scanf("%d%d",q-num,q-score);//输入新结点的值
q-link=0;//新结点的指针域置0
if(h==0)
h=q;//第一个结点作为链头结点
else
p-link=q;//新结点添加到链表的末尾
p=q;
}
return h;//返回链头指针
}
void print(node*h)//链表输出函数的定义
{
while(h)//当指针h非空时输出h所指结点的值
{
printf("num=%d\tscore=%d\n",h-num,h-score);
h=h-link;//使h指向下一个结点
}
}
用c语言创建链表主函数这里
Linklist List;
printf("输入创建链表的长度:");
scanf("%d",num);
CreateList_H(List,num); //创建链表
改为
LNode List;
printf("输入创建链表的长度:");
scanf("%d",num);
CreateList_H(List,num); //创建链表
函数内在堆上分配好内存,但是 没有传递到栈上
另外 你的变量名很迷人
链表的建立//c语言实现链表的建立,按逆序复制
#includestdio.h
#includestdlib.h
struct node
{
int info;//节点信息
struct node *next;
};
struct node *Create(int *numnode)
{//创建一个链表
struct node *head,*tail,*cnew;
head=NULL;
int num;
printf("输入数据(以零结束):");
while(1)
{
scanf("%d",num);
if(num==0)//输入为零表示输入结束
break;
cnew=(struct node*)malloc(sizeof(struct node));
cnew-info=num;
cnew-next=NULL;
if(head==NULL)//若为空则将头节点指向新节点
head=cnew;
else
tail-next=cnew;//将当前节点的next指向新的节点
tail=cnew;
(*numnode)++;
}
return head;
}
struct node *ReverseCopy(struct node *head1,int *numnode)
{//复制链表函数反向复制
struct node *p,*head,*q;
head=NULL;//初始化为空
for(q=head1;q!=NULL;q=q-next)
{//根据head1链表来建立新的链表
p=(struct node *)malloc(sizeof(struct node));
p-info=q-info;//将head1链表的数据元素复制到新的节点中
p-next=head;//将新节点的的next指向头节点
head=p;
//将head移向新的节点,for语句结束head就指向了最后建立的节点处即head1的最后一个节点处
//每次插入都是在head和新节点之间移动
(*numnode)++;
}
return head;
}
void show(struct node *head)
{//遍历链表输出
struct node *p;
if(head==NULL)
{
printf("链表为空,没有数据\n");
return;
}
printf("\n-----链表的数据元素------\n");
for(p=head;p!=NULL;p=p-next)
printf("%d ",p-info);
printf("\n");
}
int main()
{
struct node *head1,*head2;
int numnode1,numnode2;
numnode1=numnode2=0;
head1=head2=NULL;
//初始化将节点个数初始化为零
head1=Create(numnode1);
推荐阅读
- flutter调用原生安卓sdk,flutter android原生
- 现在什么直播软件挣钱,哪一种直播软件赚钱快
- 电视版本怎么升,如何升级电视版本
- erp系统的回收站在哪里,erp收货流程
- php写数据库连接 php连接数据库表
- sqlserver占内存不足,sqlserver占内存高
- redis延时双删缺点,redis数据一致性延时双删
- 小米手机怎么访问硬盘内存,小米手机访问网络硬盘
- go语言外部库 go语言函数库