gxdevelpor 可以添加指针p吗? 在那个对话框中添加视图?

参加的小组
关注他/她的人
还没有任何人关注他/她!
(C)2012 本站提供的内容来源于广大网络用户,我们不保证内容的正确性。如果转载了您的内容,希望删除的请联系我们!在线等答案!!!获取子对话框中编辑框指针_百度知道
在线等答案!!!获取子对话框中编辑框指针
如何才能获取子对话框或父对话框中编辑框指针,(获取其他窗口中编辑框的指针和内容)请给出相关代码,谢谢。
VC 现在又两个窗口,在一个窗口中有一个按钮,另一个窗口中有编辑框,点按钮,将文本内容放到另一个窗口中的编辑框中 自己些的程序,怎么都获取不到另一个窗口中编辑框的指针
提问者采纳
首先HWND hWnd=FindWindow(&你的那个含编辑框的窗口&);然后GetDlgItem(hWnd,ID)
提问者评价
谢谢,我GetDlgItem一百多变,原来少&::&,TMD MFC
其他类似问题
对话框的相关知识
其他2条回答
大哥,什么语言,VC?直接把编辑框的内容做为对话框的参数不就可以了?
如果不是你的程序,而是别人的编译好的可执行程序的话,而你又不知道源代码,不利用非常手段指针是不可能获得了。但是可以获得句柄。GetWindow,EnumChildWindow,GetDlgItem这几个函数获取句柄自己去研究吧。获取了句柄一样可以对窗口进行各种操作。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁mfc对话框程序中一个类用指针调用另一个类的vector器皿时出错_下面warning是咋回事?_关于冒泡法算法,该怎么处理__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
mfc对话框程序中一个类用指针调用另一个类的vector器皿时出错
下面warning是咋回事?
关于冒泡法算法,该怎么处理
mfc对话框程序中一个类用指针调用另一个类的vector器皿时出错
mfc对话框程序中一个类用指针调用另一个类的vector容器时出错。在类a中有一个已经排好序列的vector容器v,在类b中用a * a_p = (a *)AfxGetMainWnd();得到a的指针,然后用a_p-&v;时,运行程序会出错,请问不同类之间的变量使用有什么主意的地方吗?对于容器来说呢?------解决方案--------------------class CMyDialog : public CDialog
CDialog* a = new CMyDialog (); \\可以,子类赋给父类.
CMyDialog * a = new CDialog();\\不可以,父类根本new不出来子类想要的东西,调用的时候当然会出错.你上面那个情况也是一样的.
MFC记不清了,好像是有通过父类的handle生成子子类对象的函数,------解决方案--------------------
在类a中有一个已经排好序列的vector容器v,在类b中用a * a_p = (a *)AfxGetMainWnd();得到a的指针,然后用a_p-&v;时,运行程序会出错,请问不同类之间的变量使用有什么主意的地方吗?对于容器来说呢?
在类a中,将变量容器v申明为public属性即可:
下面warning是咋回事?
下面warning是怎么回事????Warning 4 warning LNK4099: PDB 'vc110.pdb' was not found with 'GLFW.lib(enable.obj)' or at 'c:\users\mirro_000\documents\visual studio 2010\Projects\gltest_Jun29\Debug\vc110.pdb'; linking object as if no debug info c:\Users\mirro_000\documents\visual studio 2010\Projects\gltest_Jun29\gltest_Jun29\GLFW.lib(enable.obj)
Warning 19 warning LNK4099: PDB 'vc110.pdb' was not found with 'GLFW.lib(enable.obj)' or at 'c:\users\mirro_000\documents\visual studio 2010\Projects\gltest_Jun29\Debug\vc110.pdb'; linking object as if no debug info c:\Users\mirro_000\documents\visual studio 2010\Projects\gltest_Jun29\gltest_Jun29\GLFW.lib(enable.obj)------解决方案--------------------删除 ncb文件
然后重新编译------解决方案--------------------在工程配置中修改GLFW.lib的位置。
关于冒泡法算法,该怎么处理
关于冒泡法算法#include&stdio.h&
#include&stdlib.h&
void bubblesort(int a[],int n)
int i,j,k;
for(i=0;i&n;i++)
exchange=0;
for(j=1;j&n-i;j++)
{ if(a[j-1]&a[j])
a[j]=a[j-1];
exchange=1;
if(exchange!=1)
for(i=0;i&n;i++)
printf("%5d",a[i]);
printf("\n");
int main()
int i,b[6]={1,23,12,34,22,14};
for(i=0;i&6;i++)
printf("%5d",b[i]);
bubblesort(b,6);
输出结果如下图所示,为什么不能排序,求高手指导~------解决方案--------------------------解决方案--------------------void bubblesort(int a[], int n) {
int i,j,k;
for(i=0; i&n-1; i++) {
exchange = 0;
for(j=1; j&n-i; j++) {
if(a[j-1] & a[j]) {
a[j] = a[j - 1];
a[j - 1] =
exchange = 1;
if(exchange != 1)
for(i=0; i&n; i++)
printf("%5d", a[i]);
printf("\n");
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:关于在模态对话框中获取父窗口对象的方法研究
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
关于在模态对话框中获取父窗口对象的方法研究
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。
代码没看 太长了
1 确认下 是否是malloc出来的内存空间
2 是否在前面已经free过、
代码太长没看完,最后一个函数,发表下观点
int delpHead(PNODE pHead)
PNODE p = NULL;
if ( NULL == pHead-&pNext )
exit(-1);//链表为空的时候直接exit? 你的pHead指针可是malloc出来的,
//虽然exit直接就结束程序了,系统也会帮你回收掉资源,但是这么果断的就退出程序,太不负责任了吧?
p = pHead-&pN
pHead-&pNext = p-&pN
free(p);//该行不注释就出错!!求解...
也不知道旁边的代码插入
想让别人帮忙至少要多做点事情啊
也许是内存释放错误,你释放的大于你申请的了
引用 4 楼 a 的回复:
也不知道旁边的代码插入
想让别人帮忙至少要多做点事情啊
不太明白,我才来论坛两天!
# include &stdio.h&
# include &malloc.h&
# include &stdlib.h&
typedef struct Node
struct Node * pN
}NODE, *PNODE;
PNODE create_list(void);//生成链表
void traverse(PNODE);//遍历链表
int lenth_list(PNODE);//求链表的长度
bool empty_list(PNODE);//判断链表是否为空
void evacuate_list(PNODE);//清除线性表L中的所有元素,即释放单链表L中所有的结点,使之成为一个空表
void back_value_list(PNODE, int);//输出单链表中第pos个结点中的元素,若pos超出范围,提示输出值不存在
int * back_pdata_list(PNODE, int); //从单链表中查找具有给定值x的第一个元素,若查找成功则返回该结点data域的存储地址,否则返回NULL
bool revise_value_list(PNODE, int, int);//把单链表中第pos个结点的值修改为x的值,若修改成功返回 true,否则返回 false
void insert_list(PNODE, int);//向单链表的表头插入一个元素val
void add_list(PNODE, int);//向单链表的末尾添加一个元素val
bool insert_pos_list(PNODE, int, int);//向单链表中第pos个结点位置插入元素为x的结点,若插入成功返回true,否则返回false
int delpHead(PNODE pHead);//删除表头值,并返回,如果失败,中止程序~!
int main(void)
PNODE pHead = NULL;
pHead = create_list();
traverse(pHead);
// if ( empty_list(pHead) )
// printf("链表为空!\n");
// printf("非空\n");
// evacuate_list(pHead);//清空链表
// printf("链表的长度为:%d\n", lenth_list(pHead) );
// back_value_list(pHead,4);//输出头指针pHead的线性表中的第4个节点中的值
//int * s = back_pdata_list(pHead,8);
// printf("%p \n",s);
// revise_value_list(pHead, 5, 88);//printf("将第5个节点的值改为88\n新的线性表为:\n");
// insert_list(pHead,99);//表头插入
// add_list(pHead, 888);//表尾追加
traverse(pHead);
insert_pos_list(pHead, 1,9999);
traverse(pHead);
int val = delpHead(pHead);
printf("表头值为: %d\n", val);
//初始化链表
PNODE create_list(void)
int len,i,
printf("请输入您要生成的链表的长度:len = ");
scanf("%d", &len);
PNODE pHead = (PNODE)malloc(sizeof(NODE));
if ( NULL == pHead )
printf("内存分配失败!\n");
PNODE pt = pH
pt-&pNext = NULL;
for (i=0; i& i++)
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if ( NULL == pNew )
printf("内存分配失败!\n");
printf("请输入第%d个节点的值!", i+1);
scanf("%d", &(pNew-&data) );
pt-&pNext = pN
pt-&pNext = NULL;
void traverse(PNODE pHead)
PNODE p = pH
while (NULL != p-&pNext)
printf("%d ",p-&data);
printf("\n");
//链表的长度
int lenth_list(PNODE pHead)
PNODE p = pH
while (NULL != p-&pNext)
//判断链表是否为空
bool empty_list(PNODE pHead)
if ( NULL == pHead-&pNext)
//清空链表
void evacuate_list(PNODE pHead)
if (NULL == pHead-&pNext)
PNODE p = pHead-&pN
printf("%p", p-&pNext);
while (NULL != p-&pNext)
pHead-&pNext = NULL;
//返回单链表中第pos个结点中的元素,若pos超出范围,则返回flase
void back_value_list(PNODE pHead,int pos)
int i = 1;
PNODE p = pH
while ( p-&pNext != NULL && i &= pos )
if ( p != pHead )
printf("第%d个值为:%d\n", pos, p-&data);
printf("返回值不存在,中止程序!\n");
int * back_pdata_list(PNODE pHead,int val)//从单链表中查找具有给定值x的第一个元素,若查找成功则返回该结点data域的存储地址,否则返回NULL
PNODE p = pH
while (p-&pNext != NULL && (p-&pNext)-&data != val)
if (NULL == p-&pNext)
return NULL;
return &((p-&pNext)-&data);
//把单链表中第pos个结点的值修改为val的值,若修改成功返回 true,否则返回 false
bool revise_value_list(PNODE pHead,int pos,int val)
PNODE p = pH
while (NULL != p-&pNext && i&=pos)
if ( i-1 == pos)
//向单链表的表头插入一个元素val
void insert_list(PNODE pHead,int val)
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if (NULL == pNew)
printf("内存分配失败!\n");
pNew-&data =
pNew-&pNext = NULL;
if ( empty_list(pHead) )
pHead-&pNext = pN
PNODE q = pHead-&pN
pHead-&pNext = pN
pNew-&pNext =
//向单链表的末尾添加一个元素val
void add_list(PNODE pHead, int val)
PNODE p = pH
while (NULL != p-&pNext)
PNODE pNew = (PNODE)malloc(sizeof(NODE));
pNew-&data =
pNew-&pNext = NULL;
p-&pNext = pN
//向单链表中第pos个结点位置前插入元素为val的结点,若插入成功返回true,否则返回false
bool insert_pos_list(PNODE pHead, int pos, int val)
PNODE p = pH
while ( NULL != p-&pNext && i&pos )
}//将p的指向,移动到pos项的前一项
if ( NULL == p-&pNext || pos &i )
PNODE pNew = (PNODE)malloc(sizeof(PNODE));
if ( NULL == pNew )
printf("内存分配失败!\n");
pNew-&data =
pNew-&pNext = p-&pN
p-&pNext = pN
//从单链表中删除表头结点,并把该结点的值返回,若删除失败则停止程序运行
int delpHead(PNODE pHead)
PNODE p = NULL;
if ( NULL == pHead-&pNext )
p = pHead-&pN
pHead-&pNext = p-&pN
free(p);//该行不注释就出错!!求解...
为什么我编译没错?
请输入您要生成的链表的长度:len = 5
请输入第1个节点的值!1
请输入第2个节点的值!2
请输入第3个节点的值!3
请输入第4个节点的值!4
请输入第5个节点的值!5
表头值为: 9999
Process returned 0 (0x0)
execution time : 7.747 s
Press any key to continue.
引用 7 楼 qq 的回复:
# include &stdio.h&
# include &malloc.h&
# include &stdlib.h&
typedef struct Node
struct Node * pN
}NODE, *PNODE;
PNODE create_list(void);//生成链表
void traverse(PNODE);//遍历链表
int lenth_list(PNODE);//求链表的长度
bool empty_list(PNODE);//判断链表是否为空
void evacuate_list(PNODE);//清除线性表L中的所有元素,即释放单链表L中所有的结点,使之成为一个空表
void back_value_list(PNODE, int);//输出单链表中第pos个结点中的元素,若pos超出范围,提示输出值不存在
int * back_pdata_list(PNODE, int); //从单链表中查找具有给定值x的第一个元素,若查找成功则返回该结点data域的存储地址,否则返回NULL
bool revise_value_list(PNODE, int, int);//把单链表中第pos个结点的值修改为x的值,若修改成功返回 true,否则返回 false
void insert_list(PNODE, int);//向单链表的表头插入一个元素val
void add_list(PNODE, int);//向单链表的末尾添加一个元素val
bool insert_pos_list(PNODE, int, int);//向单链表中第pos个结点位置插入元素为x的结点,若插入成功返回true,否则返回false
int delpHead(PNODE pHead);//删除表头值,并返回,如果失败,中止程序~!
int main(void)
PNODE pHead = NULL;
pHead = create_list();
traverse(pHead);
// if ( empty_list(pHead) )
// printf("链表为空!\n");
// printf("非空\n");
// evacuate_list(pHead);//清空链表
// printf("链表的长度为:%d\n", lenth_list(pHead) );
// back_value_list(pHead,4);//输出头指针pHead的线性表中的第4个节点中的值
//int * s = back_pdata_list(pHead,8);
// printf("%p \n",s);
// revise_value_list(pHead, 5, 88);//printf("将第5个节点的值改为88\n新的线性表为:\n");
// insert_list(pHead,99);//表头插入
// add_list(pHead, 888);//表尾追加
traverse(pHead);
insert_pos_list(pHead, 1,9999);
traverse(pHead);
int val = delpHead(pHead);
printf("表头值为: %d\n", val);
//初始化链表
PNODE create_list(void)
int len,i,
printf("请输入您要生成的链表的长度:len = ");
scanf("%d", &len);
PNODE pHead = (PNODE)malloc(sizeof(NODE));
if ( NULL == pHead )
printf("内存分配失败!\n");
PNODE pt = pH
pt-&pNext = NULL;
for (i=0; i& i++)
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if ( NULL == pNew )
printf("内存分配失败!\n");
printf("请输入第%d个节点的值!", i+1);
scanf("%d", &(pNew-&data) );
pt-&pNext = pN
pt-&pNext = NULL;
void traverse(PNODE pHead)
PNODE p = pH
while (NULL != p-&pNext)
printf("%d ",p-&data);
printf("\n");
//链表的长度
int lenth_list(PNODE pHead)
PNODE p = pH
while (NULL != p-&pNext)
//判断链表是否为空
bool empty_list(PNODE pHead)
if ( NULL == pHead-&pNext)
//清空链表
void evacuate_list(PNODE pHead)
if (NULL == pHead-&pNext)
PNODE p = pHead-&pN
printf("%p", p-&pNext);
while (NULL != p-&pNext)
pHead-&pNext = NULL;
//返回单链表中第pos个结点中的元素,若pos超出范围,则返回flase
void back_value_list(PNODE pHead,int pos)
int i = 1;
PNODE p = pH
while ( p-&pNext != NULL && i &= pos )
if ( p != pHead )
printf("第%d个值为:%d\n", pos, p-&data);
printf("返回值不存在,中止程序!\n");
int * back_pdata_list(PNODE pHead,int val)//从单链表中查找具有给定值x的第一个元素,若查找成功则返回该结点data域的存储地址,否则返回NULL
PNODE p = pH
while (p-&pNext != NULL && (p-&pNext)-&data != val)
if (NULL == p-&pNext)
return NULL;
return &((p-&pNext)-&data);
//把单链表中第pos个结点的值修改为val的值,若修改成功返回 true,否则返回 false
bool revise_value_list(PNODE pHead,int pos,int val)
PNODE p = pH
while (NULL != p-&pNext && i&=pos)
if ( i-1 == pos)
//向单链表的表头插入一个元素val
void insert_list(PNODE pHead,int val)
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if (NULL == pNew)
printf("内存分配失败!\n");
pNew-&data =
pNew-&pNext = NULL;
if ( empty_list(pHead) )
pHead-&pNext = pN
PNODE q = pHead-&pN
pHead-&pNext = pN
pNew-&pNext =
//向单链表的末尾添加一个元素val
void add_list(PNODE pHead, int val)
PNODE p = pH
while (NULL != p-&pNext)
PNODE pNew = (PNODE)malloc(sizeof(NODE));
pNew-&data =
pNew-&pNext = NULL;
p-&pNext = pN
//向单链表中第pos个结点位置前插入元素为val的结点,若插入成功返回true,否则返回false
bool insert_pos_list(PNODE pHead, int pos, int val)
PNODE p = pH
while ( NULL != p-&pNext && i&pos )
}//将p的指向,移动到pos项的前一项
if ( NULL == p-&pNext || pos &i )
PNODE pNew = (PNODE)malloc(sizeof(PNODE));
if ( NULL == pNew )
printf("内存分配失败!\n");
pNew-&data =
pNew-&pNext = p-&pN
p-&pNext = pN
//从单链表中删除表头结点,并把该结点的值返回,若删除失败则停止程序运行
int delpHead(PNODE pHead)
PNODE p = NULL;
if ( NULL == pHead-&pNext )
p = pHead-&pN
pHead-&pNext = p-&pN
free(p);//该行不注释就出错!!求解...
我用gcc测试了,并没有出错
引用 10 楼 buyong 的回复:
Quote: 引用 7 楼 qq 的回复:
# include &stdio.h&
# include &malloc.h&
# include &stdlib.h&
typedef struct Node
struct Node * pN
}NODE, *PNODE;
PNODE create_list(void);//生成链表
void traverse(PNODE);//遍历链表
int lenth_list(PNODE);//求链表的长度
bool empty_list(PNODE);//判断链表是否为空
void evacuate_list(PNODE);//清除线性表L中的所有元素,即释放单链表L中所有的结点,使之成为一个空表
void back_value_list(PNODE, int);//输出单链表中第pos个结点中的元素,若pos超出范围,提示输出值不存在
int * back_pdata_list(PNODE, int); //从单链表中查找具有给定值x的第一个元素,若查找成功则返回该结点data域的存储地址,否则返回NULL
bool revise_value_list(PNODE, int, int);//把单链表中第pos个结点的值修改为x的值,若修改成功返回 true,否则返回 false
void insert_list(PNODE, int);//向单链表的表头插入一个元素val
void add_list(PNODE, int);//向单链表的末尾添加一个元素val
bool insert_pos_list(PNODE, int, int);//向单链表中第pos个结点位置插入元素为x的结点,若插入成功返回true,否则返回false
int delpHead(PNODE pHead);//删除表头值,并返回,如果失败,中止程序~!
int main(void)
PNODE pHead = NULL;
pHead = create_list();
traverse(pHead);
// if ( empty_list(pHead) )
// printf("链表为空!\n");
// printf("非空\n");
// evacuate_list(pHead);//清空链表
// printf("链表的长度为:%d\n", lenth_list(pHead) );
// back_value_list(pHead,4);//输出头指针pHead的线性表中的第4个节点中的值
//int * s = back_pdata_list(pHead,8);
// printf("%p \n",s);
// revise_value_list(pHead, 5, 88);//printf("将第5个节点的值改为88\n新的线性表为:\n");
// insert_list(pHead,99);//表头插入
// add_list(pHead, 888);//表尾追加
traverse(pHead);
insert_pos_list(pHead, 1,9999);
traverse(pHead);
int val = delpHead(pHead);
printf("表头值为: %d\n", val);
//初始化链表
PNODE create_list(void)
int len,i,
printf("请输入您要生成的链表的长度:len = ");
scanf("%d", &len);
PNODE pHead = (PNODE)malloc(sizeof(NODE));
if ( NULL == pHead )
printf("内存分配失败!\n");
PNODE pt = pH
pt-&pNext = NULL;
for (i=0; i& i++)
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if ( NULL == pNew )
printf("内存分配失败!\n");
printf("请输入第%d个节点的值!", i+1);
scanf("%d", &(pNew-&data) );
pt-&pNext = pN
pt-&pNext = NULL;
void traverse(PNODE pHead)
PNODE p = pH
while (NULL != p-&pNext)
printf("%d ",p-&data);
printf("\n");
//链表的长度
int lenth_list(PNODE pHead)
PNODE p = pH
while (NULL != p-&pNext)
//判断链表是否为空
bool empty_list(PNODE pHead)
if ( NULL == pHead-&pNext)
//清空链表
void evacuate_list(PNODE pHead)
if (NULL == pHead-&pNext)
PNODE p = pHead-&pN
printf("%p", p-&pNext);
while (NULL != p-&pNext)
pHead-&pNext = NULL;
//返回单链表中第pos个结点中的元素,若pos超出范围,则返回flase
void back_value_list(PNODE pHead,int pos)
int i = 1;
PNODE p = pH
while ( p-&pNext != NULL && i &= pos )
if ( p != pHead )
printf("第%d个值为:%d\n", pos, p-&data);
printf("返回值不存在,中止程序!\n");
int * back_pdata_list(PNODE pHead,int val)//从单链表中查找具有给定值x的第一个元素,若查找成功则返回该结点data域的存储地址,否则返回NULL
PNODE p = pH
while (p-&pNext != NULL && (p-&pNext)-&data != val)
if (NULL == p-&pNext)
return NULL;
return &((p-&pNext)-&data);
//把单链表中第pos个结点的值修改为val的值,若修改成功返回 true,否则返回 false
bool revise_value_list(PNODE pHead,int pos,int val)
PNODE p = pH
while (NULL != p-&pNext && i&=pos)
if ( i-1 == pos)
//向单链表的表头插入一个元素val
void insert_list(PNODE pHead,int val)
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if (NULL == pNew)
printf("内存分配失败!\n");
pNew-&data =
pNew-&pNext = NULL;
if ( empty_list(pHead) )
pHead-&pNext = pN
PNODE q = pHead-&pN
pHead-&pNext = pN
pNew-&pNext =
//向单链表的末尾添加一个元素val
void add_list(PNODE pHead, int val)
PNODE p = pH
while (NULL != p-&pNext)
PNODE pNew = (PNODE)malloc(sizeof(NODE));
pNew-&data =
pNew-&pNext = NULL;
p-&pNext = pN
//向单链表中第pos个结点位置前插入元素为val的结点,若插入成功返回true,否则返回false
bool insert_pos_list(PNODE pHead, int pos, int val)
PNODE p = pH
while ( NULL != p-&pNext && i&pos )
}//将p的指向,移动到pos项的前一项
if ( NULL == p-&pNext || pos &i )
PNODE pNew = (PNODE)malloc(sizeof(PNODE));
if ( NULL == pNew )
printf("内存分配失败!\n");
pNew-&data =
pNew-&pNext = p-&pN
p-&pNext = pN
//从单链表中删除表头结点,并把该结点的值返回,若删除失败则停止程序运行
int delpHead(PNODE pHead)
PNODE p = NULL;
if ( NULL == pHead-&pNext )
p = pHead-&pN
pHead-&pNext = p-&pN
free(p);//该行不注释就出错!!求解...
我用gcc测试了,并没有出错
我用的是VC测试的,弹出一个对话框出来,不清楚是什么问题...你再试试.
这种情况一般是你对p的引用越界了
//这个是代码
//代码好长啊
引用 14 楼 sadadi 的回复:
这个有问题,p指向空了,还free他干嘛
引用 15 楼 yiyefangzhou24 的回复:
Quote: 引用 14 楼 sadadi 的回复:
这个有问题,p指向空了,还free他干嘛
你说P的引用越界了,是什么意思,我还是没弄明白.至于14楼,就没必要去深究了..
仅供参考//假设带表头结点的单向链表头指针为head,试编写一个算法将值为5的结点插入到连接表的第k个结点前,删除第k个节点,并对该链表进行排序。
#include &stdio.h&
#include &stdlib.h&
#include &malloc.h&
#include &time.h&
struct NODE {
struct NODE *
} H,*head,*p,*q,*s1,*s2,*s3,*s4,*s;
int i,j,k,n,t,m;
int main() {
srand(time(NULL));
//填写头节点数据
H.data=-1;
H.next=NULL;
//创建10个节点的单链表
for (i=0;i&10;i++) {
q=(struct NODE *)malloc(sizeof(struct NODE));
if (NULL==q) return 1;
q-&data=rand()%100;//填写0..99的随机值
q-&next=NULL;
p-&next=q;
//输出整个单链表
while (1) {
if (NULL==s) {
printf("\n");
printf("%02d-&",s-&data);
//将值为5的结点插入到单链表的第k个结点前
while (1) {
if (NULL==p) {
if (k==n) {
q=(struct NODE *)malloc(sizeof(struct NODE));
if (NULL==q) return 1;
q-&data=5;
q-&next=p-&
p-&next=q;
//输出整个单链表
while (1) {
if (NULL==s) {
printf("\n");
printf("%02d-&",s-&data);
//删除第k个节点
while (1) {
if (NULL==p) {
if (k==n) {
p-&next=q-&
//输出整个单链表
while (1) {
if (NULL==s) {
printf("\n");
printf("%02d-&",s-&data);
//从小到大排序
for (p=p!=NULL && p-&next!=NULL;p=p-&next) {
for (q=p-&q!=NULL && q-&next!=NULL;q=q-&next) {
if (p-&next-&data & q-&next-&data) {
//交换data
printf("swap %02d %02d\n",p-&next-&data,q-&next-&data);
t=p-&next-&p-&next-&data=q-&next-&q-&next-&data=t;
//交换next
printf("swap %02d %02d\n",p-&next-&data,q-&next-&data);
s2=p-&next-&
s4=q-&next-&
if (s2!=s3) {
p-&next=s3;
s3-&next=s2;
q-&next=s1;
s1-&next=s4;
p-&next=s3;
s3-&next=s1;
s1-&next=s4;
//输出整个单链表
while (1) {
if (NULL==s) {
printf("\n");
printf("%02d-&",s-&data);
getchar();
//输出整个单链表
while (1) {
if (NULL==s) {
printf("\n");
printf("%02d-&",s-&data);
//将单链表中前 m 个结点和后 n 个结点进行互换,m+n为链表总长10
while (1) {
if (NULL==p) {
if (m+1==k) {
head-&next=q-&
s-&next=s1;
q-&next=NULL;
//输出整个单链表
while (1) {
if (NULL==s) {
printf("\n");
printf("%02d-&",s-&data);
//释放所有节点
while (1) {
if (NULL==p) {
//18-&94-&58-&17-&27-&20-&43-&57-&75-&78-&
//18-&94-&05-&58-&17-&27-&20-&43-&57-&75-&78-&
//18-&94-&05-&58-&27-&20-&43-&57-&75-&78-&
//05-&18-&20-&27-&43-&57-&58-&75-&78-&94-&
//43-&57-&58-&75-&78-&94-&05-&18-&20-&27-&
其它技术资料
如果您喜欢IT行业或者对IT行业感兴趣,想开拓技术视野,欢迎加入本站官方QQ群:,在群里认识新朋友和交流技术^_^
Powered by && & 2013 &&&

我要回帖

更多关于 对话框中添加视图 的文章

 

随机推荐