双链表的一个小问题
大家好,我是初学者,只是先做一些小题目,我现在想创建一个双链表,并且对双链表进行删除操作,下面是我的程序,编译时没有错误,但是为什么运行时就没有结果,而且弹出一个错误提示呢?希望大家帮我看看哦。
#include "stdafx.h"
#include <iostream.h>
struct node
{ int data;
node *pre, *next;
};
void DeleteNode(node* phead,int x){
node *p=phead->next;
node *q=phead;
node *s=NULL;
while(p!=NULL){
if(p->data==x)
{
s=p->next;q->next=s;
s->pre=q;
q++;
p++;
}
}
p=phead->next;
while(p->next!=NULL)
cout<<p->data<<' ';
}
node* CrateNode(node* phead,int a[],int n)
{
node *p=phead;
node *q=p->next;
for(int i=0;i<n;i++)
{
q->data=a[i];
q->pre=p;
q->next=NULL;
p=q;
}
p=phead->next;
while(p->next!=NULL)
cout<<p->data<<' ';
return phead;
}
void main()
{
node *phead=NULL;
node *p;
int x[7]={15,35,4,17,10,15,20};
p=CrateNode(phead,x,7);
DeleteNode(p,15);
}
#include "stdafx.h"
#include <iostream.h>
struct node
{ int data;
node *pre, *next;
};
void DeleteNode(node* phead,int x){
node *p=phead->next;
node *q=phead;
node *s=NULL;
while(p!=NULL){
if(p->data==x)
{
s=p->next;q->next=s;
s->pre=q;
q++;
p++;
}
}
p=phead->next;
while(p->next!=NULL)
cout<<p->data<<' ';
}
node* CrateNode(node* phead,int a[],int n)
{
node *p=phead;
node *q=p->next;
for(int i=0;i<n;i++)
{
q->data=a[i];
q->pre=p;
q->next=NULL;
p=q;
}
p=phead->next;
while(p->next!=NULL)
cout<<p->data<<' ';
return phead;
}
void main()
{
node *phead=NULL;
node *p;
int x[7]={15,35,4,17,10,15,20};
p=CrateNode(phead,x,7);
DeleteNode(p,15);
}
...全文
相关推荐
数据结构的双链表算法
通过理解和熟练掌握双链表及其算法,对于提升编程能力,尤其是解决复杂数据处理问题的能力,具有重要意义。
约瑟夫问题-基于java+双链表实现的约瑟夫问题题解.zip
双链表的每个节点包含两个指针,分别指向它的前一个节点和后一个节点,这样可以轻松地在链表中移动。以下是一个基于Java和双链表解决约瑟夫问题的步骤:1.
josephu问题 单链表 双链表
总的来说,约瑟夫环问题是一个典型的算法问题,它考察了开发者对链表数据结构的理解和操作能力。通过单链表和双链表的不同实现,我们可以对比不同数据结构在特定问题上的优劣,进一步提升我们的编程技巧。
双链表实现的大数阶乘
在这个实现中,我们使用双链表来存储大数的每一位数字。2.大数的阶乘计算:大数的阶乘计算是一个非常复杂的问题,传统的计算方法是使用递归函数或迭代的方法,但是这些方法的计算效率会急剧下降。
node双链表好用的资源
总的来说,熟悉和掌握双链表是提高Node.js开发能力的重要一步,这个资源库提供了一个很好的实践平台,可以帮助开发者熟练运用双链表解决实际问题。无论是初学者还是有经验的开发者,都能从中受益。


