数据结构------链表创建与输出
一下是自己学习并编写的链表的创建和输出过程,简单易懂。
#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; }
一定要记住链表创建的步骤,理解每一步