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

我的第一个结构链表

 
阅读更多
<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. 查找:根据城市名或位置坐标查找特定...

    数据结构_两个链表的合并一元多项式相加

    - 用户输入第一个多项式的项数,调用`Creatpolyn`函数创建链表。 - 用户输入第二个多项式的项数,再次调用`Creatpolyn`创建第二个链表。 - 调用`AddPolyn`函数合并两个多项式链表,得到结果链表。 - 最后调用`...

    C++ 数据结构 链表

    循环链表与单链表类似,区别在于最后一个节点的指针不是指向空,而是指向链表的第一个节点,形成一个循环。这使得遍历循环链表更加方便,因为没有明确的结束标志。在C++中,实现循环链表需要特别处理最后一个节点的...

    数据结构链表倒排方法代码

    倒排链表是指将链表中的元素顺序反转,使得原链表的最后一个元素成为新链表的第一个元素,以此类推。 链表倒排的三种方法如下: 1. 创建新链表实现倒排(方法一): 这种方法通过创建一个新的链表,将原链表的节点...

    数据结构链表的c语言实现

    - 头节点:链表通常以一个特殊的节点开始,称为头节点,它的指针域指向链表的第一个实际数据节点。 - 尾节点:链表的最后一个节点,其指针域通常为NULL,表示链表的结束。 2. 链表类型: - 单链表:每个节点只有...

    数据结构复习之链表

    3. 循环链表:最后一个节点的指针不为null,而是指回链表的第一个节点,形成一个环状结构。循环链表在处理无限循环或周期性数据时非常有用。 链表的主要操作包括: 1. 插入:在链表的特定位置(头部、尾部或其他...

    数据结构实验——链表

    1. 创建两个带头结点的循环单链表LA和LB,循环链表的特点是最后一个节点的指针指向第一个节点。 2. 将两个循环单链表合并为一个循环单链表,`MergeCycleList`函数用于此操作,合并后的头指针为LA。 六)单链表应用 ...

    50.两个链表的第一个公共节点1

    两个链表的第一个公共节点1"中,主要涉及的知识点是链表操作,特别是寻找两个链表的交点。这是一个常见的数据结构问题,旨在考察程序员对链表的理解以及解决问题的能力。以下是详细解释: 首先,链表是一种线性数据...

    数据结构-链表.pdf

    循环链表是一种特殊的链表,最后一个数据元素的指针指向第一个数据元素,形成一个闭合的链式结构。双向循环链表是一种特殊的链表,每个数据元素都带有一个指向前一个数据元素的指针和一个指向后一个数据元素的指针,...

    数据结构线性链表课件

    2. **初始化**:了解如何创建空链表,并插入第一个元素,即头节点。 3. **插入操作**:学习在链表的头部、尾部或指定位置插入新节点的方法。 4. **删除操作**:掌握在链表中删除指定节点的步骤,特别注意处理头...

    数据结构 链表的操作 win32 VS

    循环链表的最后一个节点指向第一个节点,形成一个环。 3. 操作:链表的基本操作包括创建链表、插入节点、删除节点、查找节点、遍历链表和打印链表等。 二、链表操作详解 1. 创建链表:首先需要定义链表节点的...

    数据结构——链表——多项式加减

    链表的头指针`L.link`指向第一个节点,`L.len`记录链表中节点的数量。 3. **多项式加减算法**: `AddPolyn`函数实现了多项式的加法。算法的核心是比较两个多项式中相同指数的项并相加。具体步骤如下: - 初始化...

    易语言简单UI框架链表结构

    “取组件子组件尾”和“取组件子组件首”是获取链表中最后一个或第一个组件的方法。在易语言中,这可能通过遍历链表或者直接访问链表头部和尾部的指针实现。这些操作在需要操作整个组件序列时非常有用,例如在遍历...

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

    在"第一、二章"的压缩文件中,很可能包含了实现单向链表和双向链表操作的C、C++、Java或Python等语言的源代码示例。这些示例程序可能涉及了初始化链表、插入新节点、删除指定节点、查找特定元素、打印链表内容等功能...

    数据结构-链表逆置算法实现

    链表逆置是指将链表中的元素顺序反转,即原本的第一个元素变为最后一个,最后一个元素变为第一个,以此类推。这个过程对于理解和掌握链表操作非常有帮助,尤其是对于初学者,它是数据结构实习中的一个典型问题。 ...

    Java数据结构--链表

    链表的第一个节点称为首节点,最后一个节点的指针为空,标识链表的结束。为了实现单链表,我们可以定义一个`SinglyLinkedNode`类,包含数据域`obj`和指向下一个节点的引用`next`。这个类还需要实现`Node`接口,提供`...

    链存储结构-双向链表

    而"循环链表"是单链表的一种变体,它的最后一个节点的指针不再为null,而是指向链表的第一个节点,形成一个环状结构,使得遍历可以无限循环。 双向链表的基本操作包括创建、插入、删除、查找和遍历。创建一个双向...

    数据结构——链表的实现

    5. `find`: 查找链表中特定值的第一个出现位置,返回索引。如果不存在,返回-1。 6. `print`: 用于调试,打印链表的所有节点。 在`链表类.h`头文件中,这些函数的声明可能如下所示: ```cpp class LinkedList { ...

    数据结构之链表的全部代码

    - **反转链表**:改变链表中节点之间的链接关系,使得原链表的最后一个节点成为新链表的第一个节点,依次类推。 在实现链表时,我们需要定义节点结构体(Node),包含数据和指向下一个节点的指针。例如,对于单向...

Global site tag (gtag.js) - Google Analytics