如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
PAGE-3-计软实验一线性链表的操作一、实验目的和要求:1加深理解线性链表的存储结构,线性链表的指针是逻辑关系的映像;2掌握动态生成链表的方法;3掌握单链表的插入、删除结点操作。实验要求:按实验内容的要求,编写程序;提交实验报告;二、实验环境:计算机操作系统windowsxp编程工具TURBOC2.0三、实验内容:设计算法,实现动态创建线性链表,实现线性链表的动态插入、删除结点。具体要求:1由用户输入10个数,动态创建线性链表;2在用户指定的第i个位置上,插入一个结点,数据域为用户输入的一个整数,输出操作后的链表;3动态删除用户指定的第i个结点,输出操作后的链表;编程提示:用一结构体存储一个结点(包括数据域和指针域);创建、插入、删除都可定义一个函数实现,创建链表可看作在头结点插入一个新结点,创建可调用插入函数实现;编写用户菜单;参考C语言课本指针部分和结构体部分。四、源程序#include<stdio.h>#include<malloc.h>#include<stdlib.h>structLinkList{intdata;structLinkList*next;};intn;structLinkList*CreatList(){structLinkList*H=NULL,*p,*q;intx;scanf("%d",&x);p=q=(structLinkList*)malloc(sizeof(structLinkList));p->data=x;while(p->data!=0){n++;if(n==1)H=p;elseq->next=p;q=p;p=(structLinkList*)malloc(sizeof(structLinkList));scanf("%d",&p->data);}q->next=NULL;return(H);}intInsertLList(structLinkList*L,inta,intb){structLinkList*p,*s;s=(structLinkList*)malloc(sizeof(structLinkList));s->data=b;if(L->next==NULL){L->next=s;s->next=NULL;return1;}p=L->next;while((p!=NULL)&&(p->data!=a))p=p->next;s->next=p->next;p->next=s;return2;}intDeleteLList(structLinkList*L,inta){structLinkList*p,*s;if(L->next==NULL)return0;p=L->next;s=p;while((p!=NULL)&&(p->data!=a)){s=p;p=p->next;}if(p==NULL)return1;s->next=p->next;free(p);return2;}main(){int*n,b,x;structLinkList*head;head=NULL;n=NULL;n=(int*)malloc(sizeof(int));*n=0;printf("请输入元素到线性链表中:");CreatList();printf("线性表中的元素是:");printf("\n输入要插入的元素:");scanf("%d",&b);printf("\n请输入在那个元素前插入:");scanf("%d",&x);InsertLList(head,x,b);printf("\n输入要删除的元素:");scanf("%d",&x);DeleteLList(head,x);}