马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我的源码如下#include <iostream>
#include <string>
using namespace std;
struct DNode
{
string data;
DNode* next;
DNode* piror;
};
void Creat_DNode(DNode**);
int main()
{
DNode *L;
Creat_DNode(&L);
system("pause");
return 0;
}
void Creat_DNode(DNode **L)
{
string ss;
DNode *p, *r;
*L = (DNode*)malloc(sizeof(DNode));
p = r = *L;
cout << "please insert string" << endl;
getline(cin, p->data);
p->next = p->piror = *L;
if (p->data == "")
{
return;
}
while(1)
{
cout << "please insert string:" << endl;
getline(cin, ss);
if (ss == "")
{
break;
}
else
{
p = (DNode*)malloc(sizeof(DNode));
p->data = ss;
p->next = *L;
(*L)->piror = p;
p->piror = r;
r->next = p;
r = p;
}
}
r = *L;
do
{
cout << " " << r->data << " ";
r = r->next;
} while (r->next!=(*L)->next);
cout << endl;
}
这个程序的作用是创建一个双向循环链表。其中的Node结构的data字段用来储存string类的字符串。
但是我在调试运行的时候总是提示我
“引发了异常: 写入访问权限冲突。
_Left 是 0xCDCDCDCD。
如有适用于此异常的处理程序,该程序便可安全地继续运行。”
如果我把data类型改成数字,并对程序做相应的修改,运行就完全没有问题。请看如下程序。#include <iostream>
#include <string>
using namespace std;
struct DNode
{
int data; //修改点
DNode* next;
DNode* piror;
};
void Creat_DNode(DNode**);
int main()
{
DNode *L;
Creat_DNode(&L);
system("pause");
return 0;
}
void Creat_DNode(DNode **L)
{
int ss; //修改点
DNode *p, *r;
*L = (DNode*)malloc(sizeof(DNode));
p = r = *L;
cout << "please insert string" << endl;
cin >> p->data; //修改点
p->next = p->piror = *L;
if (p->data == 0) //修改点
{
return;
}
while(1)
{
cout << "please insert string:" << endl;
cin >> ss; //修改点
if (ss == 0) //修改点
{
break;
}
else
{
p = (DNode*)malloc(sizeof(DNode));
p->data = ss;
p->next = *L;
(*L)->piror = p;
p->piror = r;
r->next = p;
r = p;
}
}
r = *L;
do
{
cout << " " << r->data << " ";
r = r->next;
} while (r->next!=(*L)->next);
cout << endl;
}
完全没有头绪啊。这是在搞毛啊。
求助。心已累。
|