本题实现链表的构造,采用表头插入法构造链表,输出表中所有元素。
函数接口定义:函数接口: ptr creat( );//构造链表 void output(ptr p);//输出链表元素
其中 p 是用户传入的参数。creat函数返回链表的头指针,输入在creat函数中输入,以0表示输入结束。output函数输出链表元素,以一个空格隔开。
裁判测试程序样例:#include输入样例:#include typedef struct node { int data; struct node *next; }snode,*ptr; ptr creat( );//构造链表 void output(ptr p);//输出链表元素 int main() { ptr head; head=creat(); output(head); return 0; }
1 2 3 0
结尾无空行
输出样例:3 2 1
结尾无空行
思路:采用表头插入法构造一个链表,然后输出
这一题我开始看到输入数据和输出数据的时候,我以为是要逆序输出,后来我才意识到表头插入法本来就是逆序的,所以这里直接输出即可
话不多说,上代码:
ptr creat()//构造链表 { int x; ptr head,p; head=NULL; scanf("%d",&x); while(x!=0) { p=(ptr)malloc(sizeof(snode)); p->data=x; p->next=head; head=p; scanf("%d",&x); } return head; } void output(ptr p)//输出链表元素 { while(p!=NULL) { printf("%d ",p->data); p=p->next; } }
拓展:这里介绍一种逆序输出的代码,非常神奇的思路(递归方法):
void output(ptr head) { if(NULL==head) { return; } if(head->next!=NULL) { output(head->next); } printf("%d",head->data); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)