请大佬看看我这种动态链表的写法是否正确

「已注销」 2020-09-26 09:19:06
一开始学习动态链表的时候没认真,后来自己自学了一下,经过看了一些代码后,发现每个人的写法都不太一样。于是我根据自己的理解写了一个简单的动态链表。请大佬帮忙看看我这种写法有没有问题?
#include <stdlib.h>
#include <iostream>
#include <conio.h>

using namespace std;

typedef struct LNode
{
int data;
struct LNode* next;
}LNode, * LinkList;
int main()
{
LinkList l, p;
l = (LNode*)malloc(sizeof(LNode));
l->next = NULL;
int i;
for(i=0;i<5;i++)
{
p = (LNode*)malloc(sizeof(LNode));
cin >> p->data;
cout << p->data << " ";
p->next = NULL;
l->next = p;
}
return 0;
}
...全文
60 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-08
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
赵4老师 2020-09-27
  • 打赏
  • 举报
回复
数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633
「已注销」 2020-09-27
  • 打赏
  • 举报
回复
非常感谢大佬们的指点
chxchxkkk 2020-09-27
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;

typedef struct LinkNode
{
    int data;
    struct LinkNode *next;
}LNode, *Link;

int main()
{
    Link pM, pHead = NULL;

    pHead = new LNode;
    pM = pHead;
    int ret = 0;

    cout << "输入链表结点的值(-1结束)" << endl;
    while ( 1 )
    {
        cin >> ret;
        if ( ret != -1 )
        {
            Link pNode = new LNode;
            pNode->data = ret;
            pNode->next = NULL;
            pM->next = pNode;
            pM = pNode;
        }
        else
        {
            break;
        }
    }

    Link pMove = pHead->next;
    while ( pMove != NULL )
    {
        cout << pMove->data << " ";
        pMove = pMove->next;
    }
    cout << "NULL" << endl;

    
    while ( pHead != NULL )
    {
        Link pTemp = pHead;                
        pHead = pHead->next;
        delete pTemp;
    }
    if ( pHead != NULL )
        delete pHead;

    system("pause");
    return 0;
}
qybao 2020-09-26
  • 打赏
  • 举报
回复
不正确,因为p的next节点没有连接起来,结果只有一个l节点和一个p节点 对比一下以下的修改 p=l; //追加 for(i=0; i<5; i++) { if(p!=l) {//如果不是头节点就追加一个节点 p->next=(LNode*)malloc(sizeof(LNode)); p=p->next;//然后p指向新节点 } cin>>p->data; cout<<p->data<<“ “; p->next=NULL; }
真相重于对错 2020-09-26
  • 打赏
  • 举报
回复
不对,因为每次都是l->next 指向了新建的节点,所以无法成为链。

64,283

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧