单链表的遍历与长度计算

来源:互联网 发布:网上厨房软件 编辑:程序博客网 时间:2024/05/20 13:05
#include <iostream>using namespace std;typedef struct Node{int val;Node *next;}node;int sum;node* mycreat(int n){node *head=NULL,*p=NULL,*ne=NULL;    head=(node*)malloc(sizeof(node));p=head;int v;int f=1;sum=0;if(n!=0) {sum=1;//由第一个数值开始总数为1ne=(node*)malloc(sizeof(node));//每次要建立下一个指针时都有开辟空间ne->val=n;//第一个已经接收,赋值p->next=ne;//和下一个链接起来p=ne;//动态指针指向下一个while(scanf("%d",&v)){if(v==0) break;else{f++;ne=(node*)malloc(sizeof(node));//每次要建立下一个指针时都有开辟空间ne->val=v;p->next=ne;p=ne;sum++;//做长度计算}}}p->next=NULL;return head;}void myprint(node *head){printf("%d\n",sum);//输出长度int f=0;node *p=NULL;p=head->next;//头指针的val是null,里的next指向下个指针,要从下个的值开始while(p!=NULL){if(f==0)printf("%d",p->val);elseprintf(" %d",p->val);p=p->next;//!!!要记得链接f++;}printf("\n");return;}int main(){int m;node *head;while(~scanf("%d",&m)){if(m==-1) break;head=mycreat(m);        myprint(head);}return 0;}

原创粉丝点击