最全的c语言链表大全
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STU *creat2(void) //方法2 { STU *p1, *p2=NULL, *head=NULL; printf(“输入学生的学号和成绩,(全输0时结束):\n"); p1=( STU *) malloc (LEN); scanf("%d%f", &p1->num, &p1->score); while ( p1->num!=0 ) { head=p1; p1->next=p2; p2=p1; p1=(STU *) malloc (LEN); scanf("%d%f", &p1->num, &p1->score) ; } free(p1); return(head); }
void main( ) { STU *h1,*h2; printf("建立链表1: \n"); h1=creat ( ); printf("建立链表2: \n"); h2=creat( ); printf("输出链表1:\n"); list(h1); printf("输出链表2:\n"); list(h2); connect(h1, h2); printf("输出连接后的链表: \n"); list(h1); }
实验8参考程序
实验8:表首添加法建立链表,连接两个链表 #include<stdio.h> #include<stdlib.h> typedef struct stu_node { int num ; float score ; struct stu_node *next ; }STU; #define LEN sizeof(STU)
STU *creat(void) ; void list(STU *head); void connect (STU *head1, STU *head2);
实验8:表首添加法建立链表,连接两个链表 STU *creat1(void) //方法1 { STU *p1, *p2, *head=NULL; printf(“输入学生的学号和成绩,(全输0时结束):\n"); p1=p2=( STU *) malloc (LEN); scanf("%d%f", &p1->num, &p1->score); while ( p1->num!=0 ) { if (head==NULL) p1->next=NULL; else p1->next=p2; head=p1; p2=p1; p1=(STU *) malloc (LEN); scanf("%d%f", &p1->num, &p1->score) ; } free(p1); return(head); }
void connect (STU *head1, STU *head2) //连接两个链表 { STU *p; p=head1; //p指向链表1的表头结点 while(p->next!=NULL) //循环结束时p指向链表1的表尾结点 p=p->next; p->next=head2; //将链表1的表尾结点与链表2的表头结点连起来 }
STU *creat4(void) //方法4,不会产生多余的结点,不用free { STU *p1, *head=NULL; int num; float score; printf("输入学生的学号和成绩, (全输0时结束):\n"); scanf("%d%f", &num, &score); while ( num!=0 ) { p1=(STU *) malloc (LEN); p1->num=num; p1->score=score; p1->next=head; head=p1; scanf("%d%f", &num, &score); } return(head); }
void list(STU *head) { STU *p; if (head==NULL) printf("链表为空!\n"); else { printf("链表信息如下:\n"); p=head; while (p!=NULL) { printf("%d, %5.2f\n", p->num, p->score); p=p->next; //令p指向下一个结点 } } }
STU *creat3(void) //方法3, 省略指针变量p2 { STU *p1, *head=NULL; printf(“输入学生的学号和成绩,(全输0时结束):\n"); p1=( STU *) malloc (LEN); scanf("%d%f", &p1->num, &p1->score); while ( p1->num!=0 ) { p1->next=head; head=p1; p1=(STU *) malloc (LEN); scanf("%d%f", &p1->Leabharlann Baiduum, &p1->score); } free(p1); return(head); }