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的问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)