鱼C论坛

 找回密码
 立即注册
查看: 2873|回复: 2

[已解决]链表问题

[复制链接]
发表于 2015-11-24 13:38:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最近刚学链表,写了这个代码,但并没有发现输出,有没有人帮忙看看啊,谢了。
代码目标是在一个链表中,按照从小到大顺序,插入一个节点。

#include <iostream>
#include <stdio.h>
#include <malloc.h>
using namespace std;
typedef struct Node
{
        int data;
        struct Node*pNext;
}node,*pnode;

pnode creatnode()
{
        int num,i,b,val;
        pnode phead=(pnode)malloc(sizeof(Node));
        //printf("输入多少个节点:");
        scanf("%d",&num);
        pnode tail=phead;
        tail->pNext=NULL;
        for(i=0;i<num;i++)
        {
                pnode pnew=(pnode)malloc(sizeof(Node));
        //        printf("第%d个结点值为:",i+1);
                scanf("%d",&val);
                pnew->data=val;
                tail->pNext=pnew;
                tail=pnew;
                tail->pNext=NULL;
        }
        return phead;
}
int print(pnode phead)
{
        pnode p=phead;
        while((p->pNext)!=NULL)
        {
                p=p->pNext;
                cout<<p->data<<" ";
        }
        return 0;
}
int del(pnode phead)
{
        pnode p=phead,n=phead;
        while((p)!=NULL)
        {
                delete p;
                n=n->pNext;
                p=n;
        }
}
int arrange(pnode phead,pnode newnode)
{
        pnode p=phead;
        pnode n;
        pnode zj;
        while((p->pNext)!=NULL)
        {
                if(((p->data)<=(newnode->data))&&((p->pNext->data)>(newnode->data)))
                {
                        zj=p->pNext;
                        p->pNext=newnode;
                        newnode->pNext=zj;
                        break;
                }
                p=p->pNext;
        }
        return 0;
}
int main()
{
        pnode phead;
        phead=creatnode();
        pnode newnode=(pnode)malloc(sizeof(Node));
        scanf("%d",newnode->data);
        arrange(phead,newnode);
        print(phead);
        del(phead);
        return 0;
}
最佳答案
2016-1-10 20:01:06
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <malloc.h>
  4. using namespace std;
  5. struct Node
  6. {
  7.         int data;
  8.         Node* pNext;
  9. };

  10. Node* Creatnode()
  11. {
  12.         int num, i=1;
  13.         Node* phead = (Node*)malloc(sizeof(Node));
  14.         Node* tail = phead;
  15.         printf("输入多少个节点:");
  16.         scanf("%d", &num);
  17.         printf("第%d个结点值为:", i);
  18.         scanf("%d", &(phead->data));
  19.         for (i = 2; i<=num; i++)
  20.         {
  21.                 Node* pnew = (Node*)malloc(sizeof(Node));
  22.                 printf("第%d个结点值为:",i);
  23.                 scanf("%d", &(pnew->data));
  24.                 tail->pNext = pnew;
  25.                 tail = pnew;
  26.                 tail->pNext = NULL;
  27.         }
  28.         return phead;
  29. }
  30. void print(Node* phead)
  31. {
  32.         Node* p = phead;
  33.         while (p->pNext != NULL)
  34.         {
  35.                 cout << p->data << " ";
  36.                 p = p->pNext;
  37.         }
  38.         cout << p->data << endl;
  39. }
  40. void del(Node* phead)
  41. {
  42.         Node *p = phead, *n = phead;
  43.         while (n->pNext != NULL)
  44.         {
  45.                 p = n;
  46.                 n = n->pNext;
  47.                 delete p;
  48.         }
  49. }
  50. void arrange(Node* phead, Node* newnode)
  51. {
  52.         Node* p = phead;
  53.         Node* zj;
  54.         while (p->pNext != NULL)
  55.         {
  56.                 if (((p->data) <= (newnode->data)) && ((p->pNext->data)>(newnode->data)))
  57.                 {
  58.                         zj = p->pNext;
  59.                         p->pNext = newnode;
  60.                         newnode->pNext = zj;
  61.                         break;
  62.                 }
  63.                 p = p->pNext;
  64.         }
  65.         if (p->pNext == NULL)
  66.         {
  67.                 p->pNext = newnode;
  68.                 newnode->pNext = NULL;
  69.         }
  70. }
  71. int main()
  72. {
  73.         Node* phead;
  74.         phead = Creatnode();
  75.         Node* newnode = (Node*)malloc(sizeof(Node));
  76.         printf("输入要插入的数\n");
  77.         scanf("%d", &newnode->data);
  78.         arrange(phead, newnode);
  79.         print(phead);
  80.         del(phead);
  81.         return 0;
  82. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-12-22 21:17:09 | 显示全部楼层
这只是一个开始
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-10 20:01:06 | 显示全部楼层    本楼为最佳答案   
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <malloc.h>
  4. using namespace std;
  5. struct Node
  6. {
  7.         int data;
  8.         Node* pNext;
  9. };

  10. Node* Creatnode()
  11. {
  12.         int num, i=1;
  13.         Node* phead = (Node*)malloc(sizeof(Node));
  14.         Node* tail = phead;
  15.         printf("输入多少个节点:");
  16.         scanf("%d", &num);
  17.         printf("第%d个结点值为:", i);
  18.         scanf("%d", &(phead->data));
  19.         for (i = 2; i<=num; i++)
  20.         {
  21.                 Node* pnew = (Node*)malloc(sizeof(Node));
  22.                 printf("第%d个结点值为:",i);
  23.                 scanf("%d", &(pnew->data));
  24.                 tail->pNext = pnew;
  25.                 tail = pnew;
  26.                 tail->pNext = NULL;
  27.         }
  28.         return phead;
  29. }
  30. void print(Node* phead)
  31. {
  32.         Node* p = phead;
  33.         while (p->pNext != NULL)
  34.         {
  35.                 cout << p->data << " ";
  36.                 p = p->pNext;
  37.         }
  38.         cout << p->data << endl;
  39. }
  40. void del(Node* phead)
  41. {
  42.         Node *p = phead, *n = phead;
  43.         while (n->pNext != NULL)
  44.         {
  45.                 p = n;
  46.                 n = n->pNext;
  47.                 delete p;
  48.         }
  49. }
  50. void arrange(Node* phead, Node* newnode)
  51. {
  52.         Node* p = phead;
  53.         Node* zj;
  54.         while (p->pNext != NULL)
  55.         {
  56.                 if (((p->data) <= (newnode->data)) && ((p->pNext->data)>(newnode->data)))
  57.                 {
  58.                         zj = p->pNext;
  59.                         p->pNext = newnode;
  60.                         newnode->pNext = zj;
  61.                         break;
  62.                 }
  63.                 p = p->pNext;
  64.         }
  65.         if (p->pNext == NULL)
  66.         {
  67.                 p->pNext = newnode;
  68.                 newnode->pNext = NULL;
  69.         }
  70. }
  71. int main()
  72. {
  73.         Node* phead;
  74.         phead = Creatnode();
  75.         Node* newnode = (Node*)malloc(sizeof(Node));
  76.         printf("输入要插入的数\n");
  77.         scanf("%d", &newnode->data);
  78.         arrange(phead, newnode);
  79.         print(phead);
  80.         del(phead);
  81.         return 0;
  82. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 20:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表