构造链表问题

韩雷 2005-09-22 03:37:46


我想构造字符串一个链表:

struct N
{
char* a;
N* next;
};

main()
{
N ???;
while(继续)
cin >> ??? ;
}

我想问问 ??? 处应该如何定义才能做到可以定义无限个N。
谢谢
...全文
166 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
格兰特杨 2005-09-22
  • 打赏
  • 举报
回复
N *head = new N;

N *curr = head;

curr = new N;

最主要的问题是,你在调用curr = head后为什么再new一个呢。这样的话,head就不能代表link中的第一个了。

修改:
N *head = new N; ->> N *head;
N* s = new N ->> N *s;

顺便说,你是写java的吗?:)
韩雷 2005-09-22
  • 打赏
  • 举报
回复
解决了这样:

N *head, *p,*q;

int i = 0;

head = p = (struct N *)malloc(sizeof(struct N));

while(i<5)
{
q=(struct N *)malloc(sizeof(struct N));

cin >> q->a;
p->next=q;
p=q;
i++;
}

p->next=NULL;


while(head != NULL)
{
cout << head->a << endl;

head = head->next ;
}


那位还有高见,请赐教,晚上揭帖,谢谢各位
韩雷 2005-09-22
  • 打赏
  • 举报
回复
无法通过head 或 curr 遍历 ,我刚试过,


N *head = new N;


N *curr = head;

curr = new N;

int i=0;

while((i++) <3)
{
cin >> curr->a;
curr->next = new N;
curr = curr->next;
}

N* s = new N;
s = head; //换成curr也不行

for(int j=0;j<3;j++)
{

cout << s->a << endl; 把s换成head或curr都不行
s= s->next;


}
fujingn188 2005-09-22
  • 打赏
  • 举报
回复
curr = curr->next;

那原来的curr不就被覆盖了吗?
当while完后curr还只是一个N

//这个是使curr中的地址等于它的下一结点的地址,其目的是移动curr,使链表
能生成新的结点.建议你画个图理解.
xiaocai0001 2005-09-22
  • 打赏
  • 举报
回复
但是你通过head指针
可以遍历生成的链表了
链表中记录了你输入的所有数据
韩雷 2005-09-22
  • 打赏
  • 举报
回复
curr = curr->next;

那原来的curr不就被覆盖了吗?
当while完后curr还只是一个N
xiaocai0001 2005-09-22
  • 打赏
  • 举报
回复
你是在学C吧
若是C++的话
还是用new更好些
韩雷 2005-09-22
  • 打赏
  • 举报
回复
谢谢,但
我真不知该如何问才能得到我想要的答案,我把我的代码都贴出来了,真希望有人能帮帮我,万分感谢
至于用malloc和realloc或calloc的话,该怎么用呢,我真的不知道。
格兰特杨 2005-09-22
  • 打赏
  • 举报
回复
只是一种思路,但你不能把 cin >> 到char*中,只能到char中。

struct N
{
char a;
N* next;
};

main()
{
N *head;
N *curr = head;

curr = new N;
while(cin >> curr->a)
{
curr->next = new N;
curr = curr->next;
}

v41dugu 2005-09-22
  • 打赏
  • 举报
回复
用malloc动态分配就可以了

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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