怎么创建无序链表,数据结构高手请帮忙!!!

typedefstructnode{intdata1;chardata2[10];node*next;}*ptrN;ptrNnode1,node2;ptrNcreatel... typedef struct node
{
int data1;
char data2[10];
node*next;
}*ptrN;
ptrN node1,node2;

ptrN createlinked()//A
{
ptrN p1,p2,head;
int a;
char*ch=new char[20];
head=0;
cout<<"产生一条无序链表,请输入数据,以-1结束:";
while(1)
{
cin>>a;
if(a==-1)break;
cin>>ch;
p1=new node1;
p1->data1=a;
strcpy(p1->data2,ch);
if(head==0)
{
head=p1;
p2=p1;
}
else
{
p2->next=p1;
p2=p1;
}
}
if(head)p2->next=0;
delete ch;
return head;
}

A行中ptrN 什么作用?在ptrN createlinked()//A中,ptrN createlinked
仅仅是函数名吗?希望数据结构高手帮我分析一下创建无序链表的思想。我看了几遍,都不是很懂。
展开
 我来答
kuaidh00
2008-01-09 · TA获得超过713个赞
知道小有建树答主
回答量:382
采纳率:0%
帮助的人:540万
展开全部
//你这个结构的算法是后插法建立的链表。我给你每句都加了注释,希望对你有所帮助。

ptrN createlinked
-----------------------
ptrN 是定义的节点的指针类型(就如同内置类型一样,是一种数据类型了。),此处作为返回值类型。(因为要创建链表,所以返回值类型当然就是节点指针类型)。
createlinked 是函数名。
typedef struct node
{
int data1;
char data2[10];
node *next;
}*ptrN;//定义一个节点指针类型。
ptrN node1,node2; //用此指针类型声明两个节点指针。

ptrN createlinked()//A
{
ptrN p1,p2,head; //声明三个节点指针。
int a;
char *ch=new char[20]; //
head=0;
cout<<"产生一条无序链表,请输入数据,以-1结束:";
while(1)
{
cin>>a;
if(a==-1)break;
cin>>ch;
p1=new node1;//申请一个节点的空间,并赋于指针p1.
p1->data1=a; //申请到内存就可以给节点的数据项赋值。
strcpy(p1->data2,ch); //这个是字符串copy,同样是写数据到节点p1.此时,数据赋值完毕。

if(head==0) //如果头节点为空。则
{ ///很明显,此链表用的是后插入法。(就是每建立一个新节点,就插到已有链表的最后面)。
head=p1; 将新建立的节点赋给头节点。
p2=p1; 并且将它保存起来,放到p2中。
}
else
{ //如果前一节点不这空,则
p2->next=p1; //将新建立的节点放到所有节点的后面。
p2=p1; //同样保存起来给下次使用。
}
}
if(head)p2->next=0;//这里就是将新插入的节点的next域写为空。构造成一个完整的链表。
delete ch;//释放在stack中申请的空间,防止泄漏。
return head; //返回链表的头节点。
}
cdhover
2008-01-09 · TA获得超过236个赞
知道答主
回答量:119
采纳率:0%
帮助的人:0
展开全部
ptrN 是函数createlinked的返回值,返回的是所创建链表头的指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式