//A1.java
public class A1 {
public static void main(String[] args) {
SimpleLinkList list=new SimpleLinkList();
list.Insert(1, "a");
list.print();
list.Insert(1, "b");
list.print();
System.out.println(list.GetElem(2));
System.out.println(list.GetElemPtr(2).data);
list.Insert(1, "c");
list.print();
list.Insert(1, "d");
list.print();
list.SetElem(1, "x");
System.out.println(list.Length());
list.Insert(1, "d");
list.print();
list.Delete(1);
list.print();
list.Insert("y");
list.print();
}
}
class Node {
String data = null;
Node next = null;
public Node() {
}
public Node(String d, Node n) {
data = d;
next = n;
}
}
class SimpleLinkList{
Node head;
public SimpleLinkList(){
head=new Node();
}
public Node GetElemPtr(int p){
if(p<0 || p>Length()){
return null;
}
Node temp=head;
for(int i=0;temp!=null && i<p;i++){
temp=temp.next;
}
return temp;
}
public int Length(){
int count=0;
for(Node temp=head.next;temp!=null;temp=temp.next){
count++;
}
return count;
}
public boolean Empty(){
return Length()==0;
}
public String GetElem(int p){
Node temp=GetElemPtr(p);
if(temp==null || p==0){
return null;
}
return GetElemPtr(p).data;
}
public void SetElem(int p,String d){
Node temp=GetElemPtr(p);
if(temp!=null && p!=0){
temp.data=d;
}
}
public void Insert(int p,String d){
Node temp=GetElemPtr(p-1);
if(temp!=null){
temp.next=new Node(d,temp.next);
}
}
public void Insert(String d){
GetElemPtr(Length()).next=new Node(d,null);
}
public void Delete(int p){
Node temp=GetElemPtr(p);
if(temp!=null && p!=0){
GetElemPtr(p-1).next=temp.next;
}
}
public void print(){
for(Node temp=head.next;temp!=null;temp=temp.next){
System.out.print(temp.data+" ");
}
System.out.println();
}
}
运行结果:
a
b a
a
a
c b a
d c b a
4
d x c b a
x c b a
x c b a y
分享到:
相关推荐
约瑟夫环的链表实现(C++) 采用链表方式解决问题,代码简单,书写格式规范,有相应注释以及测试小模块。
本文将详细介绍如何使用简单的数据结构来实现约瑟夫问题的解决方案,包括构建循环链表的过程以及如何通过算法来找出最后剩下的那个人。 #### 二、基础知识回顾 在深入讨论之前,我们需要了解一些基础概念: - **...
#### 五、实验报告的书写要求 - **明确实验目的**:阐述实验的主要目标。 - **记录实验数据**:包括输入数据和输出结果。 - **问题与解决方案**:描述实验过程中遇到的问题及解决方法。 - **实验体会**:总结实验...
例如,当面对大量数据时,简单的数组可能不足以应对,这时候就需要引入链表、树或图等更复杂的结构。数据结构的设计旨在优化特定操作的性能,如查找、删除和排序。 算法是解决问题的步骤和方法。衡量算法好坏的主要...
8. **掌握如何书写程序设计报告**:撰写文档是一项重要的技能,它能帮助开发者更好地组织思路、沟通想法。 ### 二、设计内容和要求 #### 1. 设计内容 - **记录结构定义**:每条记录包括学生的学号、四门课程的...
05_考试题解答和项目开发代码书写手法 06_一级指针易错模型分析_重点 07_C语言中的const知识点总结 08_指针的输入和输出模型 09_课堂答疑_指针所指向内存释放 10_二级指针做输入_第1种内存模型 11_二级指针做输入_第...
线性组织是最基础的形式,通常通过链表或数组实现,而排序组织和对折法则利用标识符的某种特性(如字母顺序)进行快速查找。杂凑组织则通过散列函数将标识符映射到固定大小的表中,以实现高效的查找速度,但实现起来...
4. **格式要求**:报告可以手写或打印,要求文字通顺、内容完整、书写整洁、装订整齐。 【关键知识点】 1. **C语言编程基础**:包括变量定义、数据类型、控制结构、函数定义与调用等。 2. **链表数据结构**:理解...
* 通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入 十一、位运算 * 位运算符的含义和使用 * 简单的位运算 十二、文件操作 * 文件类型指针(FILE类型指针) * 文件的打开与关闭(fopen,fclose...
- 学习简单的数据结构和算法,如数组、链表等,并能理解和分析程序。 - 在Visual C++ 6.0环境下,应能编写和调试C程序。 2. **C语言程序的结构**: - 理解程序的基本构成,包括主函数main和其他辅助函数。 - ...
3.通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。 十一、位运算 1.位运算符的含义和使用。 2.简单的位运算。 十二、文件操作 只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲...
15. 表达式的前缀表示:前缀表达式(波兰式)是一种不需要括号即可表示运算顺序的表达式形式,此题要求考生理解前缀表达式的书写规则。 二、问题求解的知识点: 1. 数学组合:这个问题涉及对给定数字的全排列计数...
3. **掌握简单的数据结构和算法**:能够理解和运用基础的数据结构(如数组、链表)和算法(排序、查找等),并能够阅读相关的简单程序。 4. **具备基本的纠错和调试能力**:能够在Visual C++环境下编写简单的C程序,...
3. **掌握简单数据结构与算法**:能够理解和应用简单的数据结构如数组、链表等,并能够设计和实现基本的算法。 4. **具备编写、调试简单C程序的能力**:能够在Visual C++ 6.0环境下编写、编译、运行和调试简单的...
- 数据结构和简单算法:理解基础的数据结构(如数组、链表)和基础算法(如排序、查找)。 - 纠错和调试:具备基本的错误检测和程序调试技能。 2. **考试内容**: - **C语言程序的结构**:理解程序的组成、...
10. **结构体与共同体**:使用typedef创建新类型,定义结构体和共用体,理解成员的引用,并学习如何通过结构体构建链表,进行链表节点的插入、删除和输出。 11. **位运算**:掌握位运算符的含义和应用,进行简单的...
线性表是数据结构中最简单但也最常用的一种,它可以被顺序存储或链式存储。在实验一中,学生需要在VC环境下用C语言实现线性表的各种操作。顺序存储结构是将所有元素连续存储在内存中,而链式存储则通过指针连接元素...
3. **掌握基础数据结构和算法**:理解简单数据结构(如数组、链表)和算法(如排序、查找)的基本原理,能够阅读并理解相关的代码。 4. **具备基本的纠错和调试能力**:能在Visual C++ 6.0环境下编写简单的C程序,并...
在C语言程序的结构方面,考生需要理解main函数和其他函数的使用,头文件、数据说明、函数的开始和结束标志以及程序中的注释,以及源程序的书写格式和C语言的编程风格。 数据类型和运算这部分,考生需掌握C语言的...
- 要求有欢送界面、菜单、文件操作,数据使用数组、结构体、链表等均可,键盘操作或鼠标操作均可。 - 模块化程序设计:要求在设计的过程中,按功能定义函数或书写多个文件,进行模块化设计,各个功能模块用函数的...