预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

上机实验报告计科093班孙浩川200910405310实验内容:线性表顺序存储的基本操作程序清单:#include<stdio.h>#include<stdlib.h>#defineN10//顺序表的最大容量intlength=0;//顺序表的当前元素个数typedefstructLNode//线性单链表存储结构{intdata;structLNode*next;}LNode,*LinkList;intCreatList_L(LinkList&L)//创建一个线性链表{L=(LinkList)malloc(sizeof(LNode));//分配一个空间给链表,作为头结点if(!L)exit(1);L->next=NULL;return1;}intListInsert_L(LinkList&L,inti,inte)//再链表的第i个元素前插入一个元素e{LinkListp=L;//p指针定位于i-1LNode*s;intj=0;while(p&&j<i-1){p=p->next;j++;}//定位if(!p||j>i-1)return0;//如果i<1或大于链表元素个数+1s=(LNode*)malloc(sizeof(LNode));if(!s)exit(0);s->data=e;//完成插入操作s->next=p->next;p->next=s;return1;}intListDelet_L(LinkList&L,inti,int&e)//删除链表L中的第i个元素,并返回给e;{LinkListp=L;LNode*q;intj=0;while(!p&&j<i-1){p=p->next;j++;}//p指针定位于i-1;if(!p->next||j>i-1)return0;e=p->next->data;//完成删除操作q=p->next;p->next=p->next->next;free(q);return1;}intListTraverse_L(LinkListL,intn)//链表的遍历{inti=0;if(!L)return0;L=L->next;while(L){if(L->data==n)returni;L=L->next;i++;}return0;}intInverseSingleList_L(LinkList&L){if(!L->next||!L->next->next)//如果链表少于2个Node那么链表不需要改变顺序return1;LNode*p,*q;p=L->next;//第一次因为p是最后一个连接所以把p->next设为空q=p->next;p->next=NULL;p=q;while(p){q=p->next;//用q去保留p后面一个Node;p->next=L->next;L->next=p;p=q;}return1;}intmain(){intList[N];LinkListL;intch,exit='N';do{printf("\t\t********************************************\n");printf("\t\t*1.创建一个顺序表.........(1)*\n");printf("\t\t*2.在顺序表中查找元表.........(2)*\n");printf("\t\t*3.在顺序表中插入元表.........(3)*\n");printf("\t\t*4.在顺序表中删除元表.........(4)*\n");printf("\t\t********************************************\n");printf("\n请选择操作代码:");ch=getchar();switch(ch){case'1':printf("\n请输入十个元素");CreatList_L(L);for(length=0;length<N;length++){scanf("%d",&List[length]);getchar();ListInsert_L(L,length+1,List[length]);}printf("\n创建成功!");getchar();break;case'2':scanf("%d",&List[0]);if(ListTraverse_L(L,List[0]))printf("该元素存在该年表的第%d个位置",ListTraverse_L(L,List[0])