一段小程序

不知起什么名 2009-08-06 07:20:29
数据结构的定义



typedef struct wavmid //CListCtrl 类型
{
char No[20]; //CListCtrl 序号
char value[50]; //CListCtrl wav\mid
struct wavmid *next;
}RNode;

typedef struct key //key 类型
{
RNode *head;
int length; //key 中元素个数
}KNode;

typedef struct keyarray
{
KNode k[4];
int length; //链表当前的长度
}KRNode;

void CTest7Dlg::CListAsSt(const int nkey) //保存数据
{

int max_row = m_ctrlWav_Mid.GetItemCount(); //获得list列表的长度

RNode *p = key.k[nkey].head; //获得表头


key.k[nkey].length = max_row;
if(max_row>0)
{
for(int i = 0;i<max_row;i++) //把 q 插入到表头后面
{
q = (RNode *)malloc(sizeof(RNode));

strncpy(q->No,(LPCTSTR)m_ctrlWav_Mid.GetItemText(i,0),sizeof(q->No));
strncpy(q->value,(LPCTSTR)m_ctrlWav_Mid.GetItemText(i,1),sizeof(q->value));

q->next = NULL;
p->next = q;
p = q;
q = NULL;
}
}
p = key.k[nkey].head;
while(p->next) //测试
{
AfxMessageBox(p->No);
}
}

为什么测度 p->为无限长? 读出乱码..
...全文
68 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
不知起什么名 2009-08-06
  • 打赏
  • 举报
回复
嗯,多谢了
LeonTown 2009-08-06
  • 打赏
  • 举报
回复
另外,
q = (RNode *)malloc(sizeof(RNode)); 后
最好再memset(q, 0, sizeof(RNode));
主要是为其成员No赋0,以表示字符串的结束符'\0'。
LeonTown 2009-08-06
  • 打赏
  • 举报
回复
其中:
while(p->next) //测试
{
AfxMessageBox(p->No);
}

应该加入p = p->next;吧
不知起什么名 2009-08-06
  • 打赏
  • 举报
回复
for(int j=0; j<4; j++)
{
key.k[j].length = 0;
key.k[j].head = (RNode *)malloc(sizeof(RNode));
key.k[j].head->next = NULL;
}

列表初始化

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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