数据结构地一点小问题!

lonelybug 2003-06-08 01:32:20
请问如何做呢!我写了一下代码可是好像不对!
void linked::Insert(int Number)
{
Node* NewPointer;
NewPointer=(Node*)malloc(sizeof(Node));
NewPointer->Data=Number;
if (NodePointer==NULL)
{
NewPointer->Link=NodePointer;
NodePointer=NewPointer;
};
while(NodePointer!=NULL)
{
if (NewPointer->Data > NodePointer->Data && NewPointer->Data < NodePointer->Link->Data)
{
NodePointer->Link=NewPointer;
NewPointer->Link=NodePointer->Link;
};
if (NewPointer->Data < NodePointer->Data)
{
NewPointer->Link=NodePointer;
std::cout << "Front" << std::endl;
};
if (NewPointer->Data > NodePointer->Data && NodePointer->Link==NULL)
{
NewPointer->Link=NULL;
NodePointer->Link=NewPointer;
std::cout << "Last" << std::endl;
};
NodePointer=NodePointer->Link;
}

}
...全文
11 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangli50 2003-06-08
  • 打赏
  • 举报
回复
谁告诉你if语句块后面要加分号阿?
huigll 2003-06-08
  • 打赏
  • 举报
回复
steedhorse(晨星) 说的有理,应该加一个return;

这个插入是错误的!!
NodePointer->Link=NewPointer;

NewPointer->Link=NodePointer->Link;

应该是:
NewPointer->Link=NodePointer->Link;
NodePointer->Link=NewPointer;
另外:
if (NewPointer->Data > NodePointer->Data && NewPointer->Data < NodePointer->Link->Data)

这个判断也不是很合理,因为如果NodePointer是最后一个的话,NodePointer->Link->Data是非法读取的。
lonelybug 2003-06-08
  • 打赏
  • 举报
回复
哦!我这不是全部的代码!
我是想实现一个Linked(联表),然后向Linked里面添加新的Node(节点),但是新加入的节点不是直接加在Linked的前面或后面而是根据从小到大的排列顺序自动的找到要加入的地方,然后加进去!
MaiCle 2003-06-08
  • 打赏
  • 举报
回复
你使用的是C++,为什么?NewPointer=(Node*)malloc(sizeof(Node));不用new 呢?

只有分配没有释放?

还有你这段代码要做什么?
晨星 2003-06-08
  • 打赏
  • 举报
回复
没仔细看,感觉第一个if结束后是否应该return掉?

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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