课程链接
建立单链表并加值,可以用之前的在最后加入新元素的方式加入值,每次都在尾部加一个新元素,但是这样每次加元素的时候都得从头开始遍历整个链表,这样时间复杂度就是O(n);所以这里用新方法。
尾插法建立单链表
**
先建立一个空表,然后让一个指针r指向这个空表,,然后申请一个新的内存存储一个元素,生成一个新的数据项,让一个新的指针s指向这个新的数据项,然后让r->next指向s,就是将表头和这个新的数据项结合起来,形成了一个表,,然后让r指向s,意思就是让r指向表尾,,,依次循环就能形成链表了,,想结束的话,直接输入9999(这个值可以自己定义)来跳出循环。
以下这个算法的时间复杂度是O(n)
LinkList List_TailInsert(LinkList &L){int x;L=(LinkList)malloc(sizeof(LNode)); //申请一块内存建立头结点(建立一个空表)LNode *s,*r=L; //让r指针指向Lscanf("%d",&x) //x就是要插入单链表的数据元素while(x!=9999) //输入9999表示结束{s=(LNode*)malloc(sizeof(LNode)); //让s指向一个新的结点s->data = x; //把x的值存在新结点的数据位r->next = s; //把r指针的next指向sr=s; //最后让r指向新的表结尾scanf("%d",&x);}r->next=NULL; //结束链表return L;}
头插法建立单链表
