还剩2页未读,继续阅读
文本内容:
郑州轻工业学院《数据构造》课程实验实验报告题目单链表表的基本操作及语言实现C专业信息管理与信息系统壬旺级11-01姓名高博文完成日期2013/5/23
一、试验内容用语言实现单链表的建设插入删除查找,合并等内容C
二、试验目的掌握链表的基本操作插入、删除、查找等运算,能够灵活应用链表这种数据构造,深入对链表链式构造的了解三.源程序代码#includestdio.h#includestdlib.htypedef intElemtype;typedef intStatus;〃定义存储节点typedef struct node数据域int data;//〃构造体指针structnode*next;构造体变量,构造体名称}*linklist,node;//〃创立单链表linklist creatint n工〃定义头指针指针linklist headp;r,p,int x,i;〃生成头结点head=node*mallocsizeofnode;指向头结点r=head;//r输入数字printf:\rT;循环用于生成第一个节点并读入数据fori=n;i0;i-//forscanfn%dn,x;p=node^mallocsizeofnode;读入第一个节点的数据第一个节点连在头结点的后面;〃p-data=x;//r-next=p;//jE r=p循环以便于生成第二个节点〃生成链表后的断开符r-next=O;返回头指针return head;//输出链表void outputlinklist head//linklist p;p=head-next;do{printf,,%3d,,p-data;p=p-next;whilep;printfn\nn;〃插入操作Status insertlinklist i,Elemtype eintj=0;linklist p=l,s;whileji-lp p=p-next;;++jif!p llji-lreturn-1;else s=node*mallocsizeofnode;s-data=e;s-next=p-next;p-next=s;return1;〃册除操作Status delectlinklist l,int i,Elemtype eljint j=0;;linklist p=l,qwhileji-lp-nextp=p-next;;++jif!p-next||ji-l return-1;else q=p-next;p-next=q-next;e=q-data;freeq;return1;〃合并单链表void combineQinklistla,linklist lbnode*pa,*pb,*pc;linklist1c;pa=la-next;pb=lb-next;lc=pc=la;whilepapb{ifpa-data=pb-data{pc-next=pa;pc=pa;pa=pa-next;else{pc-next=pb;pc=pb;pb=pb-next;}pc-next=papa:pb;freelb;〃查找操作Status GetElemlinklistl,int i,Elemtype elinklist p;intj;p=l-next;二;j lwhilepji p=p-next;;++jif!p lljireturn-2;e=p-data;return e;void mainlinklistla,lb;int n;int i,j;Elemtype e;printf请输入第一个链表:\n printf输入链表元素的个数:\n;scanfH%dH,n;la=creatn;输出链表printf:\n”;outputla;printf“请输入要查找元素的位置:\n;scanfn%d\i;j=GetElemla,i,e;所要查找的元素是%printf d\n”,j;请输入插入位置和元素printf:\n;scanf1,%d%d,,,i,e;insertla,i,e;”插入后的链表:;printf\n outputla;请输入要删除的位置:printf\n;scanfM%dn,i;delectla,i,e;删除的那个元素是:%printf d\n”,e;输出删除后的顺序表:printf\n”;outputla;printf”请输入第一个非递减链表:\n printf输入链表元素的个数:\n;scanfH%dH,n;la=creatn;输出链表:printf\noutputla;printf”请输入第二个非递减链表:\n;printf输入链表元素的个数个scanfn%dn,n;lb=creatn;输出链表:printff\n”;outputlb;combinela,lb;输出合并后的链表:;printf\n”outputla;运行结果如下
六、结果分析与思考关于单链表的建设要比顺序表难懂,单链表的建设有头插法和尾插法两种,我选用的是尾插法,尾插法较之头插法更为简单和使用,一定要熟练使用。