数据结构上机实验(二)
来源:互联网 发布:搜索下载 python 实现 编辑:程序博客网 时间:2024/05/17 06:33
1、编写一个程序,实现顺序表的各种基本运算(假设顺序表的元素类型char),并在此基础上设计一个程序,完成以下功能:
(1)
(1)初始化顺序表L;
(2)采用尾插法依次插入元素a,b,c,d,e;
(3)输出顺序表L;
(4)输出顺序表L的长度;
(5)判断顺序表L是否为空;
(6)输出顺序表L的第3个元素;
(7)输出元素a的位置;
(8)在第4个元素位置上插入元素f;
(9)输出顺序表L;
(10)删除L的第3个元素;
(11)输出顺序表L;
(12)释放顺序表L。
代码:
import java.util.Scanner;class Sqlist {char[] data;int length;// public void SqInit() {// length=0;// }void InitList(Sqlist l){l.length=0;}void CreatList(Sqlist l,char [] a,int n) {l.length = n;l.data=new char[1000];for(int i=0;i<n;i++){l.data[i]=a[i];}}int getListLength(Sqlist l){return l.length;} boolean ListEmpty(Sqlist l){ return(l.length==0); } char GetElem(Sqlist l,int i){ return l.data[i]; } int LocateElem(Sqlist l,char e){ int i=0; while(i<l.length&&l.data[i]!=e) i++; if(i>l.length)return 0; else return i+1; } boolean ListInsert(Sqlist l,int i,char e){ int j; int len=l.length+1; if(i<1||i>l.length+1) return false; i--; for(j=l.length;j>i;j--) l.data[j]=l.data[j-1]; l.data[i]=e; l.length++; return true; }boolean ListDelet(Sqlist l, int i) {int j;if(i<1||i>l.length)return false;i--;//e=l.data[i];for(j=i;j<l.length-1;j++)l.data[j]=l.data[j+1];l.length--;return true;}void Displist(Sqlist l){for(int i=0;i<l.length;i++){System.out.print(l.data[i]+" ");}}}public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner in = new Scanner(System.in);//int n = in.nextInt();Sqlist l = new Sqlist();char[] a=new char[5];for(int i=0;i<5;i++)a[i]=(char)(i+'a');System.out.println("初始化顺序表L");l.InitList(l);l.CreatList(l,a,5);System.out.print("依次采用尾插法插入");l.Displist(l);System.out.println("元素");System.out.print("输出顺序表:");l.Displist(l);System.out.println();System.out.println("顺序表L的长度="+l.getListLength(l));if(l.ListEmpty(l))System.out.println("顺序表L为非空");elseSystem.out.println("顺序表L为空");System.out.print("查找第i个元素,请输入i:");int i=in.nextInt();System.out.println("顺序表L的第"+i+"个元素="+l.GetElem(l,i));System.out.print("查找元素ch的位置,请输入ch:");char ch=in.next().charAt(0);System.out.println("元素"+ch+"所在的位置="+l.LocateElem(l, ch));System.out.print("在第m个位置上查入元素查ch1,请输入m和ch1:");int m=in.nextInt();char ch1=in.next().charAt(0);l.ListInsert(l, m, ch1);System.out.print("输出顺序表:");l.Displist(l);System.out.print("删除L的第x个元素,请输入x:");int x=in.nextInt();l.ListDelet(l, x);System.out.print("输出顺序表:");l.Displist(l);System.out.println();System.out.println("释放顺序表L");}}
2、
编写一个程序exp2-2.cpp,实现单链表的各种基本运算(假设单链表的元素类型为char),并在此基础上完成如下功能:
(1)初始化单链表h;
(2)采用尾插法依次插入元素a,b,c,d,e;
(3)输出单链表h;
(4)输出单链表h长度;
(5)判断单链表h是否为空;
(6)输出单链表h的第3个元素;
(7)输出元素a的位置;
(8)在第4个元素位置上插入元素f;
(9)输出单链表h;
(10)删除h的第3个元素;
(11)输出单链表h;
代码:
#include <iostream>#include <cstring>#include <malloc.h>using namespace std;typedef struct Node{ char data; struct Node *next;}LinkList;void InitList(LinkList *&l){ l=(LinkList *)malloc(sizeof(LinkList)); l->next=NULL;}void CreateListF(LinkList *&l,char a[],int n){ LinkList *s,*r; int i; l=(LinkList *)malloc(sizeof(LinkList)); r=l; for(i=0;i<n;i++) { s=(LinkList *)malloc(sizeof(LinkList)); s->data=a[i]; r->next=s; r=s; } r->next=NULL;}void DistList(LinkList *&l){ LinkList *p=l->next; while(p!=NULL) { cout<<p->data<<" "; p=p->next; } cout<<endl;}int ListLength(LinkList *l){ int n=0; LinkList *p=l; while(p->next!=NULL) { n++; p=p->next; } return n;}bool ListEmpty(LinkList *l){ return (l->next==NULL);}char GetElem(LinkList *l,int i){ int j=0; LinkList *p=l; while(p!=NULL) { j++; p=p->next; if(j==i) break; } return p->data;}int LocateElem(LinkList *l,char e){ int i=1; LinkList *p=l->next; while(p!=NULL&&p->data!=e) { p=p->next; i++; } if(p==NULL) return 0; else return i;}bool ListInsert(LinkList *l,int i,char e){ int j=0; LinkList *p=l,*s; while(j<i-1&&p!=NULL) { j++; p=p->next; } if(p==NULL) return false; else { s=(LinkList *)malloc(sizeof(LinkList)); s->data=e; s->next=p->next; p->next=s; return true; }}bool DeleList(LinkList *l,int i,char e){ int j=0; LinkList *p=l,*q; while(j<i-1&&p!=NULL) { j++; p=p->next; } if(p==NULL) return false; else { q=p->next; if(q==NULL) return false; e=q->data; p->next=q->next; free(q); return true; }}int main(){ LinkList *l; char a[]={'a','b','c','d','e'}; cout<<"(1)初始化单链表"<<endl; InitList(l); cout<<"(2)采用尾查法依次插入元素a,b,c,d,e"<<endl; CreateListF(l,a,5); cout<<"(3)输出单链表L:"; DistList(l); cout<<"(4)输出单链表的长度="; cout<<ListLength(l)<<endl; cout<<"(5)判断单链表L是否为空:"; if(ListEmpty(l)) cout<<"是空单链表"<<endl; else cout<<"非空单链表"<<endl; cout<<"(6)输出单链表L的第3个元素:"<<GetElem(l,3)<<endl; cout<<"(7)输出元素a的位置:"<<LocateElem(l,'a')<<endl; cout<<"(8)在第4个元素的位置上插入元素f"<<endl; ListInsert(l,4,'f'); cout<<"(9)输出单链表L:"; DistList(l); cout<<"(10)删除L的第三个元素:"<<endl; DeleList(l,3,'a'); cout<<"(11)输出单链表L:"; DistList(l); return 0;}
0 0
- 数据结构上机实验(二)
- 数据结构课程上机实验题(二)
- 数据结构 第二次上机 实验二
- C#上机实验(二)
- c++上机实验(二)
- 数据结构课程上机实验题(一)
- 数据结构课程上机实验题(三)
- 数据结构上机实验学习体会
- 【web】上机实验二
- 数据结构上机之实验查找
- 数据结构上机实验:单链表操作
- 数据结构第四章上机实验
- 数据结构实验二(单链表)
- 数据结构--上机实验实验要求:二叉排序树【拓展】
- 数据结构上机实验之二分查找(SDUT 2039)
- 数据结构上机实验之二分查找(哈希优化)
- 数据结构上机实验(1) 顺序线性表
- 《数据结构》实验二线性表实验(实验报告)
- 最小圈基问题
- Method Swizzling、AOP 面向切片编程
- Hibernate缓存
- 一个伟大的发现,装X一下。笔记本win7系统64位机器运行unity 时,屏幕模糊解决办法
- python中的闭包
- 数据结构上机实验(二)
- Android APP性能优化十大方案
- linux目录作用详解(超详细,树状排版)
- MapReduce实现TopK
- [leetcode 59] Spiral Matrix II--------数组转圈赋值
- Linux设备驱动之Ioctl控制
- WebView与js交互注意事项
- 网络流之--最小点权覆盖和最大点权独立集
- Java的一些入门总结