`
20386053
  • 浏览: 437448 次
文章分类
社区版块
存档分类
最新评论

我的第一个结构链表

 
阅读更多
<iostream><iostream><head-><head-></head-></head-></iostream></iostream>
我的第一个结构链表

这天上午,我准备学链表,最简单的单链,然后我打开教材,用眼睛扫了一遍。恩,在脑子里印像最深的,就是要完成链表,需要三个指针,一个带指向自己针指的结构。就是下面这样

structtemp
...{
inta;
temp
*next;
}
;

哦,就是这样。其它的有印像也是很模糊的。想不起来有什么具体内容。我的学习过程可能比较奇怪,因为我喜欢自己解决问题。所以我就放下了教材,把毛巾盖在脸上。闭上眼睛。
在头脑里形成这样的概念。什么是链表呢?以前听说过,这东西就是动态分配内存中的结构一个联一个,用结构中的那个指针指向下一个结构。
怎么完成呢,我有三个指针。第一步,我需要有一个指针建第一个结构,如下:

jianlian
=newtemp;

然后我需要再建第二个结构,用第二个指针?哦不不不,想起来点了,好像只用一个指针建新的结构。那我怎么办呢?把第二个指针指向建好的这个。

genban
=jianlian;

下面用第一个指针建第二个:

jianlian
=newtemp;

下面我们要做什么了呢,对了,把第一个和第二个结构联起来
genban
->next=jianlian;
哈!
让第一个结构里的指针元素来联上第二个!我觉得我要成功一大半了。
好像可以建第三个了
jianlian
=newtemp?
哦,不不不,不是这样。如果是这样我们怎么访问这第三个结构呢,怎么给这东西赋值?难道用这个?

genban
->next->next.......next..

哦,不,我不希望这样,这样手动打字会很累的,我们需要的是循环控制,我们怎么办呢

恩,我们需要把genban弄过来,genban
=jianlian;
然后新建结构哈jianlian
=newtemp;

然后再把第二个的genban
->next指向新的,嘿嘿,成了

呃。。好像不对。。书上说用三个指针。。我怎么用了两个呢。。难道俺是天才?

不管了,写程序去。拿开脸上的毛巾,开始编。。



#include
<iostream>
usingnamespacestd;

structlian
...{
intnumber;
stringname;
lian
*next;
}
;

lian
*head;

lianjianlian()
...{
lian
*ls;
lian
*le;

ls
=newlian;

cout
<<"请输入编号和名字: ";
cin
>>ls->number>>ls->name;

while((ls->name=="null")==0)
...{

if(head==NULL)
...{
head
=ls;
}

else
...{
le
->next=ls;
}

le
=ls;
ls
=newlian;
cin
>>ls->number>>ls->name;
}


le
->next=NULL;
deletels;
return0;
}


呃。。遇到困难了。。我怎么用这个链呢。。两个手指针一个在前建一个在后跟着。。哪以前的我怎么找。。
这不是熊瞎子掰包玉,掰一个丢一个吗。。最开始的哪个哪里去了。

啊,三个指针,哈哈,原来如此!!有一个指针是指向第一个结构的,哈哈
重写!

#include
<iostream>
usingnamespacestd;

structlian
...{
intnumber;
stringname;
lian
*next;
}
;

lian
*head;

lian
*jianlian()
...{
lian
*ls;
lian
*le;

ls
=newlian;

cout
<<"请输入编号和名字: ";
cin
>>ls->number>>ls->name;

head
=NULL;

while((ls->name=="null")==0)
...{

if(head==NULL)
...{
head
=ls;
}

else
...{
le
->next=ls;
}

le
=ls;
ls
=newlian;
cin
>>ls->number>>ls->name;
}


le
->next=NULL;
deletels;

returnhead;
}


voidprint(lian*head)
...{
while(head->next!=NULL)
...{
cout
<<head->number<<""<<head->name<<endl;
head
=head->next;
}


}


intmain()
...{
print(jianlian());
return0;
}

分享到:
评论

相关推荐

    数据结构实验——链表

    单链表的基本操作 一)建立单链表+求长度+显示 (1) 由键盘逐个输入正整数,...建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的data域存放一个二进制位,并在此链表上实现对二进制数加1的运算。

    设计一个基于链表的数据结构

    - 第一章:链表基本概念 - 知识点:链表的定义、特点、存储方式等 - 实验项目:实现一个简单的单链表 - 第二章:链表操作 - 知识点:链表的创建、插入、删除、查找等操作 - 实验项目:实现一个具有基本操作...

    数据结构 单向链表 双向链表 源程序

    数据结构第一章 第二章的一些小程序,包括单向链表,双向链表,a交b等等

    数据结构链表的相关操作

    1)编写完成下列功能的函数:(1)初始化一个链表;(2)创建一个包含15个不大于100的正整数值的链表(15个值由计算机随机产生);(3)将一个数插在第i个元素前(i在程序运行时输入);(4)删除第i个元素(i在程序...

    数据结构:图解链表,链表的插入和删除(c语言版)

    这里我们在第3个结点后插入一个结点,可以将新结点赋值给第三个结点的next,将原来的第4个结点赋值给新界点的next,这里新结点就成立第4个结点了,上代码 void List_IndexInsert(LNode** root, ElemType data, int ...

    将两个递增的链表合并为一个非递减的链表

    从键盘输入两个链表,通过程序对他们排序,之后按递增顺序合并链表

    数据结构实验-1客房管理(链表应用实验)

    (7)函数void MoveK1(HLink &H, int k),将单链表中倒数第k个结点移到第一个结点位置,注意:严禁采用先计算链表长度n再减k(即n-k)的方法; (8)函数void ReverseN2(HLink &H),将单链表的正中间位置结点之后的全部...

    循环链表API及实现(关键步骤详细代码注释)

    包含:循环链表的数据结构、创建循环链表、销毁一个循环链表、清空一个循环链表、返回循环链表的长度、插入一个元素、返回一个元素、按位置删除一个元素、按结点值删除一个元素、重置游标指向第一个结点元素、返回...

    数据结构 第一章 链表 ppt

    高级JAVA语言 链表 自学必备 大学教程

    数据结构实验——链表及其运算

    设一个指针变量p,先指向第1个结点,显示p所指的结点,然后p后一个结点再显示之,直到链表尾结点。 (3)删除链表中的结点是从p指向第1个结点开始,检查该结点的数据是否等于要删除的数据,如果相等就将该结点删除,如...

    链表删除的

    给定一串数字,用链表结构进行存储。然后给定针对该链表的若干删除操作,要求将执行删除操作后的结果输出。...(假设链表中第一个节点的编号为1)。 执行了m次删除操作中,输出剩下的n-m个数字。每个数字用空格空开。

    2个按值非递减的链表合并(数据结构)

    数据结构中的链表合并: //合并函数 void MergeList_L(LinkList &L1;,LinkList &L2;,LinkList &L3;) { //已知单链线性表L1和L2的元素按值非递减排列。 //归并L1和L2得到新的单链线性表L3,L3的元素也按值非递减...

    数据结构 链表的节本操作

    学习数据结构的第一个上机实验 链表的基本操作

    数据结构之链表的相关算法的验证

    5)查找操作:查找值为x的元素在单链表中出现的位置(是链表中的第几个元素)。 3、 为便于观察程序的运行结果,设计的输出函数能在输出设备上以图形或表格或其它直观的形式输出计算结果。例如可将链表输出成如下...

    通过C语言实现数据结构的循环链表

    在循环链表中,通常会有一个头指针指向第一个节点。通过头指针可以遍历整个循环链表。添加一个新节点时,只需要修改相邻节点的指针,将新节点插入到链表中即可。删除一个节点时,同样需要修改相邻节点的指针,将被...

    数据结构循环链表查找

    下一个人,即原来的第k+1 个位置上的人,又从1 开始报数,再报数到k 的人站出来。依此重复下去,直到全部的人都站出来为止。试设计一个程序求出出列序列。这是一个使用循环链表的经典问题。因为要不断地出列,采用...

    010 数据结构逆向—链表1

    第一个对象血量:[[[[eax]]+C]+0xC]+8 第二个对象血量:[[[[[eax]]]+C]+0xC]+8 第三个对象血量:[[[[[[eax]]]]+

    2020西南交通大学数据结构实验报告单向链表算法练习.doxc

    1.插入元素--输入i, e,在单向链表第i个元素之前插入元素e,输出插入e后的单向链表(已知有效的插入位置号i=0,1, ... , n,其中n为线性表当前长度;若插入失败,应提示失败原因是无效i或者存储空间不足); 2.删除...

    Java-数据结构课设-链表实现通讯录管理系统

    第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。 
 第二个模块——Menu()的功能是:显示提示选单。 
 第三个模块——Quit()的功能是:退出选单。 
 第四个模块——Create...

    c语言 链表的综合操作

    数据结构 c语言 链表的综合操作,增删改查,倒数第k个

Global site tag (gtag.js) - Google Analytics