7-5 单向链表的创建与输出
本题目要求补充两个函数,实现如下功能:
输入若干个正整数,以-1结束,采取向链表中添加节点的方式来建立一个单链表,并输出这个单链表。
向链表尾部添加节点函数:
link AppendNode(link head,int data);
其中link结构定义如下:
typedef struct link
{
int data;
struct link *next;
}*link;
- head:链表头指针,如果head为NULL,则会新建头节点
- data:要添加的节点数据值
- 函数返回值:添加节点后的链表头指针
输出链表函数:
void DisplyNode(link head);
- head :链表头指针
主函数样例:
#include
#include
typedef struct link
{
int data;
struct link *next;
}*link;
link AppendNode(link head,int data);
void DisplyNode(link head);
int main()
{
int data;
link head = NULL;
while (1)
{
scanf("%d",&data);
if (data==-1)
break;
head = AppendNode(head,data);
}
DisplyNode(head);
return 0;
}
输入格式:
从键盘输入若干个正整数(空格分隔),以-1结束。
输出格式:
依次输出单链表中各个节点的数据元素值,元素间以逗号分隔。如果链表为空,则输出NULL。参看输出样例。
输入样例:
1 3 5 7 9 -1
结尾无空行
输出样例:
1,3,5,7,9
结尾无空行
输入样例:
-1
结尾无空行
输出样例:
NULL
结尾无空行
#include#include typedef struct link { int data; struct link* next; }*link; link pre, p; link AppendNode(link head, int data); void DisplyNode(link head); int main() { int data; link head = NULL; while (1) { scanf("%d", &data); if (data == -1) break; head = AppendNode(head, data); } DisplyNode(head); return 0; } link AppendNode(link head, int data) { if (head == NULL) { head = new link; head->next = NULL; pre = head; } p = new link; p->data = data; p->next = NULL; pre->next = p; pre = p; return head; } void DisplyNode(link head) { bool a=0; link l = head; if (l == NULL)printf("NULL"); else { l = l->next; while (l != NULL) { if(a)printf(",");printf("%d", l->data);a=1;l = l->next; } } }
基础题目,自己给head开了空间逃避head为NULL的问题。



