#include

#define CreateNode(x) x = new BLPtr
#define DeleteNode(x) delete []x

using namespace std;

struct BLPtr
{
char data;
struct BLPtr *prior;
struct BLPtr *next;
};

struct BLPtr *creat(void);
void print(struct BLPtr *p);
bool beErased(char);
//struct BLPtr erase(struct BLPtr *p);
int erase(struct BLPtr *p);

int main()
{
struct BLPtr *p;
p = creat();
cout<<"原始链表数据为："<<endl;
print(p);
erase(p);
cout<<"处理后链表数据为："<<endl;
print(p);
return 0;
}

struct BLPtr *creat(void)
{//建立一个无附加头结点的双向循环链表
head = p1 = CreateNode(p2);//新建第一个结点
cout<<"请输入第一个结点数据：";
cin>>p2->data;//输入第一个结点数据
while(p2->data != '#')//输入“#”结束
{
p2->prior = p1;//后方前驱指针指向前方结点
p1->next = p2;//前方后继指针指向后方结点
CreateNode(p2);//新建结点
cout<<"请继续输入：";
cin>>p2->data;//输入新节点数据
}
DeleteNode(p2);
return p1;
}
void print(struct BLPtr *p)
{
struct BLPtr *pn;
pn = p->next;
while(pn != p)//输出除p以外的结点数据
{
cout<data<<" ";//运行中断，求指教
pn = pn->next;//沿next向下搜索
}
cout<data<<endl;//输出最后一个结点数据
}

1个回答

new 与 delete 配对，不用 [] 试试。

`````` #define CreateNode(x) x = new BLPtr
#define DeleteNode(x) delete x
``````

5 年多之前 回复

5 年多之前 回复

5 年多之前 回复