链表末尾增加一个节点的操作。

SadPerson 2003-07-24 04:14:15
写一个函数,完成在链表末尾增加一个节点的操作。
函数原型为:
Node * AddNode(Node *head,int newDate);
其中,链表节点的定义如下:
struct Node{
int data;
Node * next;

}
...全文
601 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zoezinsser 2003-07-25
  • 打赏
  • 举报
回复
停了!

不要这样,一片天空,弄脏了!
jackywangsen 2003-07-25
  • 打赏
  • 举报
回复
刚贴的有点问题,改正如下:

Node * AddNode(Node *head,int newDate){
Node *p=(Node *)malloc(sizeof(Node));
Node *s=head;
while(s->next){//应该是对指针域进行判断,前面的搞错了,改正
s=s->next;
}
p->data=newDate;
p->next=NULL;
s->next=p;
return p;
}
jackywangsen 2003-07-25
  • 打赏
  • 举报
回复
#include "stdio.h"

typedef struct Node{
int data;
struct Node * next;
}Node;

Node * AddNode(Node *head,int newDate){
Node *p=(Node *)malloc(sizeof(Node));
Node *s=head;
while(s){
s=s->next;
}
p->data=newDate;
p->next=NULL;
s->next=p;
return p;
}

main(){
getch();
}
bigtea 2003-07-24
  • 打赏
  • 举报
回复
假设楼主的原链表为无头结点的单链表,则
Node * AddNode(Node *head,int newDate)
{
struct Node * p, * q;
p=head;
while(p->next!=NULL) p=p->next;
if (q=(Node * )malloc(sizeof(Node)) exit (0);
p->next=q;
q->data=newDate;
q->next=NULL;
return head;
}
youngmean 2003-07-24
  • 打赏
  • 举报
回复
先进先出的队列式链表:
{
struct Node* p,* tail;
p=head;
if(!p)
printf("error");
else
{
while(p->next)
p=p->next;
tail=p;//tail记录最后一个结点
p=(struct Node*) malloc(sizeof(struct Node));
p->next=tail->next;
tail->next=p;
}

}
shailiavia 2003-07-24
  • 打赏
  • 举报
回复
Node * AddNode(Node *head,int newDate);//head为头指针
{ Node *p=NULL,*q=NULL; //p用于找到链表最后一个节点,q用于生成新节点
p=head;
while(p->next) p=p->next; //p的后继不空,顺着链表往后走
q=Node* (malloc(sizeof(Node));
q->next=NULL;
q->data=newData;
p->next=q;
}
//head所指链表即为所需链表
loneststar 2003-07-24
  • 打赏
  • 举报
回复
哎,错了。订正如下
Node * AddNode(Node *head,int newDate)
{
Node *p=head;
if(head) {
while (p->next) p=p->next;
p->next=new Node;
p=p->next;
p->next=NULL;
p->data=newData;
};
else {
head = new Node;
head->next=NULL;
head->data=newData;
p = head;

};

return p;
}
loneststar 2003-07-24
  • 打赏
  • 举报
回复
完整一点的 :)
Node * AddNode(Node *head,int newDate)
{
Node *p=head;
if(head) {
while (p->next) p=p->next;
p->next=new Node;
p=p->next;
p->next=NULL;
p->data=newData;
};
else {
head = new Node;
head->next=NULL;
head->data=newData;
p = head->next;

};

return p;
}

ckp 2003-07-24
  • 打赏
  • 举报
回复
楼上的实现函数可能有错,现改正如下:
实现函数
{
Node *p=head;
if(head) {
while (p->next) p=p->next;
p->next=new Node;
p=p->next;
p->next=NULL;
p->data=newData;
};
else {
head = new Node;
head->next=NULL;
head->data=newData;
};
}

listart 2003-07-24
  • 打赏
  • 举报
回复
实现函数
{
Node *p=head;
while (p) p=p->next;
p->next=new Node;
p=p->next;
p->next=NULL;
p->data=newData;
}

69,371

社区成员

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

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