题解 | #牛牛的单向链表#

牛牛的单向链表

http://www.nowcoder.com/practice/95559da7e19c4241b6fa52d997a008c4

#include <stdio.h>

struct list{ int num; struct list *next; };

//链表内容打印 void ptink(struct test *head) { struct list *point=head;

    while(point!=NULL)
    {
            printf("%d ",point->num);
            point=point->next;//while里面的判断其实是在判断point->next是否为NULL
    }
    putchar('\n');

}

int main() { struct list *arr_list=NULL; struct list head_list=NULL; int i,n; scanf("%d",&n); int arr[n]; for(i=0;i<n;i++) { scanf("%d",&arr[i]); } //数组的输出 / for(i=0;i<n;i++) { printf("%d ",arr[i]); } printf("\n"); */ //利用尾插法 for(i=0;i<n;i++) { struct list *new_list=NULL; new_list = (struct list *)malloc(sizeof(struct list)); //开辟空间

	new_list->num = arr[i];
	new_list->next = NULL;  //成员项赋值 
	
	if(arr_list == NULL)
	{  //当目标链表为空链表的时候 
		arr_list = new_list;  //当arr_list为空的时候 arr_list直接和new_list为一个链表 
		head_list = arr_list; //为什么要把这个头链表放这里? 
		//最开始arr_list为NULL,此时首次创建的时候则有地址指向了
		//此时arr_list有指向位置了,所以最终的目标链表指向arr_list 最开始的头 
		//且这种只能满足 从空链表开始创建的时候使用 
	}
	else
	{ 
		while(arr_list->next != NULL)  //判断头链表的位置是否在尾部 (在尾部 arr_list->next == NULL) 
		{
			arr_list = arr_list->next; 		//往后移动 
		}
		arr_list->next = new_list; 
	}
//	free(new_list);
}	
ptink(head_list);

return 0;	

}

全部评论

相关推荐

zaakfung:26届不应该春招吗 为啥还实习
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务