《数据结构第二次上机指导书(共6页).doc》由会员分享,可在线阅读,更多相关《数据结构第二次上机指导书(共6页).doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上 实验1 线性表顺序存储结构实现3.1实验目的和要求掌握线性表的结构性质及其链式存储结构各种操作的实现;3.2实验内容用C#编程实现线性表的链式存储结构及各种操作,尤其要实现任意位置元素的插入和删除操作。3.3实验指导1、建立控制台应用程序,创建结点类Node和链式顺序表类SepLinkedList,结点类Node包括两个字段成员_data和_next,分别表示该结点的结点元素和下一结点;包括两个属性成员Data和Next,分别完成对_data和_next读写;3个构造函数 Node()、Node(T data)、Node(Node next),分别表示创建无参数的对
2、象、参数为T类型数据的对象、参数为Node类型结点的对象。链式顺序表类SepLinkedList包括1个私有字段成员_head-头指针;包括1个属性成员Head,完成对_head读写;包括一系列操作方法成员;2、在主入口函数中创建类的实例,对该实例完成各种操作,每次操作完结果进行输出。3.4部分程序参考代码结点类Public class Node private T _data; public T Data get return _data; set _data = value; private Node _next; public Node Next get return _next; se
3、t _next = value; public Node() _data = default(T); _next = null; public Node(T data) _data = data; _next = null; public Node(Node next) _next = next; 单链表类Public class SepLinkedList privateNode_head; / 头指针 public Node Head get return _head; set _head = value; / 获取单链表长度 public int GetLength() Node p =
4、 _head; int length = 0; while (p != null) length+; p = p.Next; return length; / 清空单链表 public void Clear() _head = null; 判断链表是否为空publicboolIsEmpty()if(_head=null)returntrue;elsereturnfalse; / 链表末尾追加数据元素 public void Append(T item) Node p = new Node(); Node q = new Node(item); if (_head = null) _head =
5、 q; return; p = _head; while (p.Next != null) p = p.Next; p.Next = q; / 删除第i个数据元素 public T Delete(int i) 该部分代码自己实现 Node p = _head; int j = 1; while (p.Next != null & j i) j+; q = p; p = p.Next; if (j = i) q.Next = p.Next; return p.Data; else Console.WriteLine(该位置不存在结点); return default(T); / 在第i个位置前插
6、入数据元素 public void Insert(T item, int i) 该部分代码自己实现 / 读取第i位置元素 public T GetElem(int i) if (IsEmpty() Console.WriteLine(链表为空); return default(T); Node p = new Node(); p = _head; int j = 1; while (p.Next != null & j i) p = p.Next; j+; if (j = i) return p.Data; else Console.WriteLine(未找到该序号的结点); return d
7、efault(T); / 按值查找数据元素 public int Locate(T item) if (IsEmpty() Console.WriteLine(链表为空); return -1; Node p = new Node(); p = _head; int i = 1; while ( p != null & !item.Equals(p.Data) p = p.Next; i+; if (p != null) return i; else Console.WriteLine(单链表中不存在指定数据元素); return -1; 2.2.3 单链表的建立:第一种方式:(采用从尾部加入
8、结点的方式) / 建立单链表 static SepLinkedList CreateLinkedList() SepLinkedList result = new SepLinkedList(); Node r = new Node(); r = result.Head; int elem = Int32.Parse(Console.ReadLine(); while (elem != -1)/以-1做为结束标志 Node p = new Node(elem); if (result.Head = null) result.Head = p; else r.Next = p;/加入链表 r =
9、 p; /记下最后一个结点 elem = Int32.Parse(Console.ReadLine(); if (r != null) r.Next = null;/最后一个节点地址域置空 return result; 第二种方式:(采用在头部加入结点的方式) static SepLinkedList CreateSepLinkedList() SepLinkedList result = new SepLinkedList(); int d = Int32.Parse(Console.ReadLine(); while (d != -1) Node elem = new Node(d); elem.Next = result.Head; result.Head = elem; d = Int32.Parse(Console.ReadLine(); return result; 专心-专注-专业