您的位置:首页 > 编程语言 > C语言/C++

链表的实现(C语言)__一步一步来

2015-04-17 21:13 78 查看

开学一直在学校数据结构,一直看菜谱,都不知道自己炒出来什么味道。



/*创建链表,实现非零整数入链并读取链表*/


#include<stdio.h>
#include<stdlib.h>

//声明结构类型
typedef struct Node
{
int val;
struct Node *next;
}Node;

//函数声明,返回类型为Node *  
Node *create();


void main()
{
Node *head=NULL;
head=create(head);
while(head!=NULL)
{
printf("%d\n",head->val);
head=head->next;
}
}

//函数返回值为指向表头的指针
Node *create(Node *head)
{
Node *p1,*p2;
p1=(Node *)malloc(sizeof(Node));
scanf("%d",&p1->val);


while(p1->val!=0)
{
if(head==NULL)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(Node *)malloc(sizeof(Node));
scanf("%d",&p1->val);
}
p2->next=NULL;
return head;
}



弄清关于结构声明的问题,Node为类型名,所以后来声明节点用 Node *head和用Node *做函数返回类型;

关于用结构和指向结构的指针做形参和函数返回值问题;

链表尾部指向NULL,本程序creat()函数开始少了p2->next=NULL,链表尾部指针没置空,导致主函数循环到链表尾部时出错。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: