线性表的链式结构创建与实现(一)

来源:互联网 发布:简单php文件管理系统 编辑:程序博客网 时间:2024/05/22 00:37

个人理解,仅供参考大笑

创建链表的步骤:

1:创建头指针

2:将头指针指向空,防止野指针

3:将新的指针移动到头指针(我习惯认为是将头指针赋值给它)

4:建立新结点

5:让新指正指向空,防止野指针

6:给新指针赋值

7:让尾指针指向当前指针,实现链表的连接(我习惯认为是让上一指针指向它)

8:将尾指针移向当前指针(我习惯认为将当前指针赋值给它)

***每次创建新指针的时候都要将指针指向NULL,防止成为野指针

#include<stdio>typedef struct node{int data;struct node *next;}node;node *CreateLink(int len){node *p,*h,*s;h=(node*)malloc(sizeof(node));     //建立头结点 h->next=NULL;                   //头结点指针指向空,防止野指针p=h;                            //指针向头指针移动 for(int i=0;i<len;i++){s=(node*)malloc(sizeof(node));     //建立新指针scanf("%d",&s->data);             //给新指针赋值 s->next=NULL                     //新指针指向空,防止野指针p->next=s;                       //尾指针指向当前指针,实现链表的连接p=s;                             //指针p向后移动 } return h; }


求链表长度

int GetLenth(node *h)          //*h头指针 {node *p;p=h->next;      //p指向第一个结点 num=0;          //计数器while(p!=NULL){num++;  p=p->next;       //指针向后移动 } return num;} 

取元素操作(找到第i个元素,并返回其值)

int FindElement(node *h,int i,int len){node *p;p=h->next;        //p指向第一个结点 count=1;          //计数器 if(i>len&&i<1)    //判断i是否合法     return -1;while(p!=NULL&&count<i)   //找到第i个元素 {p=p->next;       //从头结点开始顺着往后找 count++;} return p->data; } 

输出链表

void Display(node *h){node *p;p=h->next;      //p指向第一个节点 while(p!=NULL){printf("%d",p->data)    //输出结点数值 p=p->next;              //指针向后移动 }}

未完待续...


原创粉丝点击