回 帖 发 新 帖 刷新版面

主题:关于单链表插入的问题

一个简单的链表插入的问题 代码如下 我运行之后要插入链表没有改变 求大神指导

#include <iostream>
using namespace std;

struct Node 
{
    Node *next;
    int   data;
};
typedef Node* pNode;
Node *insert(pNode head);
pNode   Reverse(pNode head);
void    PrintList(pNode head);
 
int main() 
{   
    // 初始化一个单链表 head开始为012345,最后一个命名last
    pNode head=new Node;    head->data=0;
    pNode a1=new Node;      a1->data  =1;    head->next=a1;
    pNode a2=new Node;      a2->data  =2;    a1->next=a2;
    pNode a3=new Node;      a3->data  =3;    a2->next=a3;
    pNode a4=new Node;      a4->data  =4;    a3->next=a4;
    pNode last=new Node;    last->data=5;    a4->next=last;
    last->next=NULL;
    
    
    cout<<"链表前: ";PrintList(head);
     head=insert(head);
    cout<<"链表后: ";PrintList(head);
 
    return 0; 

 
 


pNode insert(pNode head)
{
    Node *q1=new Node;
    q1=head;
    Node *s1=new Node;s1->data=3;
      s1->next=NULL;
      while(q1->data<s1->data)
     q1=q1->next;
     s1->next=q1->next;
      q1=s1;

     delete s1;
      s1=NULL;

    
return head;
}
void    PrintList(pNode p)
{
    while (NULL != p)
    {
        cout<<p->data;
        p=p->next;
    }
    cout<<endl;
}

回复列表 (共2个回复)

沙发


pNode insert(pNode head)
{
    Node *q1=new Node;
    q1=head;
    Node *s1=new Node;s1->data=3;
      s1->next=NULL;
      while(q1->data<s1->data)
     q1=q1->next;
     s1->next=q1->next;
      q1=s1;

     delete s1;
      s1=NULL;

    
return head;
}
这里面写的有问题,你既然让s1添加进链表里为什么还要释放呢?而且应该是q1->next = s1;这样链表才能连接起来。

建议你先看看数据结构。

板凳

你这个链表结构很让人无语。。。。看看数据结构的书吧

我来回复

您尚未登录,请登录后再回复。点此登录或注册