首页 > 电脑

建立一个链表

更新时间2018-09-06 09:20:08

1.创建头文件(扩展名为.h),存放链表的存储结构。

2.创建源文件(扩展名为.c),存放链表的建立、节点的建立,节点插入、节点删除。

3.创建源文件(扩展名为.c),调用已有算法,创建5个节点的链表,然后进行插入和删除节点测试。

注:每个节点之含有一个整型的数据域和一个指针域。

//c语言实现链表的建立,按逆序复制#include<stdio.h>#include<stdlib.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;elsetail->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("链表为空,没有数据 ");return;}printf(" -----链表的数据元素------ ");for(p=head;p!=NULL;p=p->next)printf("%d ",p->info);printf(" ");}int main(){struct node *head1,*head2;int numnode1,numnode2;numnode1=numnode2=0;head1=head2=NULL;//初始化将节点个数初始化为零head1=Create(&numnode1);show(head1);printf(" 链表head1的节点个数为:%d ",numnode1);head2=ReverseCopy(head1,&numnode2);//调用复制函数,完成复制show(head2);printf(" 链表head2的节点个数为:%d ",numnode2);return 0;}

要专业的才行。

存放链表的存储结构。

上一篇:安装Python的时候遇到问题

下一篇:求教汇编语言问题