问题描述
我想请教什么是链表,我有一些编程的基础,我了解数组,但是链表这个东东我实在是搞不懂,能否请各位给举个例子,或用一些代码来实现,在下高分求教,多谢~~~顺便问下:我今天刚刚注册,是朋友推荐的。怎么我在发帖时的“帖子问题点数”这一栏只能给“0”分呢?我明明有200可用分呀。
解决方案
解决方案二:
链表是数据结构讲的东西,表示数据的存储方式,建议找找数据结构相关的书籍。
解决方案三:
楼主,学过数据结构吗?呵呵,看下吧
解决方案四:
是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比较顺序结构,链表比较方便插入和删除操作。 线性表的链式存储表示的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。因此,为了表示每个数据元素与其直接后继数据元素之间的逻辑关系,对数据元素来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。由这两部分信息组成一个"结点"(如下图所示),表示线性表中一个数据元素。===================================================== 三个链表函数(C语言描述) #include<stdio.h> #include<stdlib.h> structNode{ intdata;//数据域 Node*next;//指针域 }; /************************************************************************************** *函数名称:insert *函数功能:在连表中插入元素. *输入:head链表头指针,p新元素插入位置,x新元素中的数据域内容 *输出:无 *************************************************************************************/ voidinsert(Node*head,intp,intx){ Node*tmp=head; for(inti=0;i<p;i++){ tmp=tmp->next; if(tmp==NULL)return; } Node*tmp2=newNode; tmp2->data=x; tmp2->next=tmp->next; tmp->next=tmp2; } /************************************************************************************** *函数名称:del *函数功能:删除链表中的元素 *输入:head链表头指针,p被删除元素位置 输出:被删除元素中的数据域.如果删除失败返回-1 **************************************************************************************/ intdel(Node*head,intp){ Node*tmp=head; for(inti=0;i<p;i++){ tmp=tmp->next; if(tmp==NULL)return-1; } intret=tmp->next->data; tmp->next=tmp->next->next; returnret; } voidprint(Node*root){ for(Node*tmp=head;tmp!=NULL;tmp=tmp->next) printf("%d",tmp->data); printf("n"); } intmain(){ Node*head; head=newNode; head->data=-1; return0; } *****************************************************************************欢迎使用CSDN论坛专用阅读器:CSDNReader(附全部源代码)http://feiyun0112.cnblogs.com/
解决方案五:
上面给出了C语言下面就给出java/***@(#)MyLinkedList.java**自定义的LinkedList*@author*@version1.002009/10/12*///节点类classNode{//数据区域publicObjectdata;//地址区域publicNodenext;publicNode(){}publicNode(Objectdata){this.data=data;}}publicclassMyLinkedList{//头节点privateNodeheader;//尾节点privateNodetailer;//记录当前元素个数privateintsize;publicMyLinkedList(){header=newNode();header.next=header;tailer=header;size=0;}publicintsize(){returnsize;}//将指定元素追加到此列表的结尾。publicvoidadd(Objecto){//1.出现一个新的节点NodenewNode=newNode(o);//2.原尾节点指向新的节点tailer.next=newNode;//3.新节点称为新的尾节点tailer=newNode;size++;}//返回此列表中指定位置处的元素。publicObjectget(intindex){//指定当前元素索引号intcount=0;//设定游标NodecurrentNode=header;Objectobj=null;for(inti=0;i<size;i++){//1.当前游标移动一个位置currentNode=currentNode.next;if(count==index){//如果当前的索引等于指定的索引号obj=currentNode.data;break;}count++;}returnobj;}}