实验二 单向链表的操作_第1页
实验二 单向链表的操作_第2页
实验二 单向链表的操作_第3页
实验二 单向链表的操作_第4页
实验二 单向链表的操作_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验二单向链表的基本操作实验目的掌握线性表链式存储的方法及其基本操作掌握将算法在VC++语言环境下实现的过程实验准备复习线性表的定义,掌握链式存储的方法及操作复习C语言中指针及结构体的概念。定义方式VC++的编程环境实验内容28,20,12,9,7,5,4,3,1在你自己的文件下,建立一个C语言程序LL.C,完成下列要求:定义一个单链表LLIST,按数据1,3,4,5,7,9,12,20,28的次序建立各结点,形成单链表LLIST,然后按链表顺序输出九个结点的存储单元地址和相应的数值;建立一个插入函数,将数据15作为结点按照从小到大的次序自动插入到链表的相应位置上,完成插入结点的操作,形成新的链表LLIST,然后输出链表结点的存储单元地址和相应的数值;建立一个删除函数,将链表中第七个结点删除,形成新的链表LLIST,然后输出链表结点的存储单元地址和相应的数值;程序清单如下:#include<stdio.h>#include<stdlib.h>#include<malloc.h>#defineNULL0typedefstructnode{intdata;sttuctnode*next;}llist;main(){llist*h,*crtll(),*insll(),*dltll();outll();h=NULL;h=crtll(h);outll(h);h=insll(h);outll(h);h=dltll(h);outll(h);}llist*crtll(llist*h){}voidoutll(llist*h){llist*y,*p;inti=1;y=h;while(y!=NULL){printf(“N=%dAD=%xDATA=%dAD->=%x\n”,i,y,y->data,y->next);y=y->next;i++;}}llist*insll(llist*h){}llist*dltll(llist*h){}#include"stdafx.h"#include<stdio.h>#include"stdlib.h"typedefstructLnode{ intdata; structLnode*next;}Lnode,*Link;voidcreate_list(Link&L){ Linkp,current;inta[]={28,20,12,9,7,5,4,3,1},j=8;L=(Link)malloc(sizeof(Lnode));L->next=NULL;current=L;while(j>=0){p=(Link)malloc(sizeof(Lnode));p->data=a[j];current->next=p;current=p;j--;}p->next=NULL;}voidprintf_list(Linkhead){Linkp;p=head->next;while(p!=NULL){ printf("%d=",p); printf("%d\n",p->data);p=p->next;}}voidinsert(Link&L){ inta=0; intn; Linkcurrent,p,q;q=(Link)malloc(sizeof(Lnode));printf("输入一个插入的数\n");scanf("%d",&n);q->data=n; p=L; current=L->next;while((current!=NULL)&&a==0) { if(q->data<current->data)a=1; else { p=p->next; current=current->next; } } p->next=q; q->next=current;}voidDelete(Link&L){ intn;printf("输入一个删除的数\n");scanf("%d",&n);Linkcurrent,p; p=L; current=L->next; while(n!=current->data) { p=p->next; current=current->next; } p->next=current->next; free(current);}voidmain(){Linkhead;create_list(head);printf_list(head);insert(head);printf_list(head);Delete(head);printf_list(head);}#include"stdafx.h"#include<stdio.h>#include"stdlib.h"typedefstructLnode{ intdata; structLnode*next;}Lnode,*Link;voidcreate_list(Link&L){ Linkp,current;inta[]={28,20,12,9,7,5,4,3,1},j=8;L=(Link)malloc(sizeof(Lnode));L->next=NULL;current=L;while(j>=0){p=(Link)malloc(sizeof(Lnode));p->data=a[j];current->next=p;current=p;j--;}p->next=NULL;}voidprintf_list(Linkhead){Linkp;p=head->next;while(p!=NULL){ printf("%d=",p); printf("%d\n",p->data);p=p->next;}}voidinsert(Link&L){ inta=0; intn; Linkcurrent,p,q;q=(Link)malloc(sizeof(Lnode));printf("输入一个插入的数\n");scanf("%d",&n);q->data=n; p=L; current=L->next;while((current!=NULL)&&a==0) { if(q->data<current->data)a=1; else { p=p->next; current=current->next; } } p->next=q; q->next=current;}voidDelete(Link&L){ intn;printf("输入一个要删除的数的位置\n");scanf("%d",&n);Linkcurrent,p; p=L; current=L->next;for(inti=1;i<n;i++){ p=p->next;current=current->next;}p->next=current->nex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论