#include <stdio.h> #include <stdlib.h> #define ElementType inttypedef struct Node *list;typedef struct node{ ElementType Data; List Next;}; int Length (List Ptrl); List findkth (int k,list Ptrl); List Find (ElementType x,list Ptrl); bool Insert (ElementType x,int i, List &ptrl); List Delete (int i,list &ptrl), void initlist (list Ptrl) {ptrl= (list) malloc (sizeof (struct Node)); Ptrl->next=null;} void Printl (List Ptrl) {printf ("-------------------------------------------------------------------\ n"); List tmplist = Ptrl;while (tmplist) {printf ("%d\n", tmplist->data); Tmplist = Tmplist->next;}} int main () {List ptrl;initlist (Ptrl), insert (10,1,ptrl);p rintl (Ptrl), insert (20,2,ptrl);p rintl (Ptrl); for (int i = 1;i <10;i++) Insert (I,i,ptrl); Printl (Ptrl); for (int i = 1;i<5;i++) Delete (I,ptrl);D elete (5,ptrl);p rintl (Ptrl); return 0;} int Length (list Ptrl) {List Tmpptrl = Ptrl;int i = 0;while (Tmpptrl) {Tmpptrl = tmpptrl->next;i++;} return i;} List findkth (int K, list Ptrl) {list p = Ptrl; int i = 1; while (P!=null && i < K) {p = p->next; i++; } if (i = = K) return p; /* Find the first k, return the pointer */else return NULL; /* Otherwise return empty */}list Find (ElementType x,list L) {List tmplist = l;while (tmplist->data!=x&&tmplist) tmplist = Tmplist->next;return tmplist;//Either is not empty, is this a}bool insert (ElementType x,int I, list &ptrl) {//If the insertion node to the head List s,p; if (i==1) {s = (List) malloc (sizeof (struct Node));s->data=x;s->next=ptrl; ptrl=s;//printf ("%d", ptrl->data); return true; p = findkth (I-1,ptrl), if (p==null) {printf ("insertion position not appropriate \ n"); return false;} Else{s = (List) malloc (sizeof (struct Node)); S->data=x;s->next=p->next;p->next=s;return true;}} List Delete (int i,list &ptrl) {//If Delete header node List s,p;if (i==1) {s = Ptrl; Ptrl = Ptrl->next;free (s); return Ptrl;} p = findkth (I-1,ptrl), if (p==null) {printf ("I-1 node does not exist \ n"); return NULL;} else if (p->next==null) {printf ("I node does not exist \ n"); return NULL;} Else{s = p->next;p->next=s->next;free (s); return Ptrl;}}
Complete implementation of the C-language linked list