您的位置:首页 > 理论基础 > 数据结构算法

数据结构------链表创建与输出

2012-10-02 16:38 253 查看
一下是自己学习并编写的链表的创建和输出过程,简单易懂。

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

struct ListNode
{
int data;
struct ListNode *next;
};

typedef struct ListNode list;

list *createList(int b)
{
int i,a;
list *head=NULL,*curNode=NULL,*tailNode=NULL; //此处除head,我们创建两个指针curNode和tailNode
//curNode总是指向当前创建的节点,tailNode总是指向链表的结尾
for(i=0;i<b;i++)
{
curNode=(list *)malloc(sizeof(struct ListNode)); //申请内存空间并判断是否成功
if(NULL==curNode)
{
printf("Allocate  memry failed......");
break;
}

printf("请输入链表中的第%d个数:",i);      //输入链表中的数并把值赋给刚创建的curNode节点
scanf("%d",&a);
curNode->data=a;

if(head==NULL)                              //这个循环只执行一次,目的就是为了定位头节点,以便使头节点一直指向第一个节点。
{
head=curNode;
tailNode=curNode;
}
else
{
tailNode->next=curNode;            //移动节点指针的时候一定要注意移动的先后顺序,比如此处
tailNode=curNode;
}
}
tailNode->next=NULL;
return head;

}

int main(void)
{
int n;
list *newNode=NULL;

printf("输入要创建链表的长度:");
scanf("%d",&n);

newNode=(list *)malloc(sizeof(struct ListNode));
newNode=createList(n);

while(newNode)
{
printf("%d",newNode->data);
newNode=newNode->next;
}
printf("\n");
free(newNode);          //有malloc就一定有free,不用了一定要归还系统
return 0;
}


一定要记住链表创建的步骤,理解每一步
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: