链表的实现(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,链表尾部指针没置空,导致主函数循环到链表尾部时出错。
阅读更多相关文章推荐
- C语言一个双向链表的实现
- 链表的C语言实现之循环链表及双向链表
- c语言手动实现反转链表 Reverse
- 我面试遇到的C语言中单链表相关的操作粗浅实现
- 算法与数据结构-单向链表的基本操作C语言实现
- 基于C语言链表实现的工作任务注册与执行
- C语言中链表的两种实现方式
- C语言实现单链表之具体实现
- 【C语言】单链表的所有操作的实现(包括PopBack、PushBack、PopFront、PushFront、Insert)
- 数据结构之---C语言实现广义表头尾链表存储表示
- C语言链表实现图书管理系统
- 双向循环链表linux中C语言实现双向循环链表
- C语言实现单链表-02版(转)
- c语言之链表实现
- c语言实现双向链表的基本操作
- 链表的c语言实现(三)
- C语言实现数据结构中的双向链表
- c语言实现双链表
- C语言中链表的实现
- 写的很好 链表的各种题目整理(C语言实现)