演算法—第二週(8月1日——8月7日)
阿新 • • 發佈:2020-08-03
單鏈表
建立,增加,刪除
1 typedef struct LNode { 2 int data; 3 LNode *next; 4 }LNode,*LinkList; 5 6 int ListInsert(LinkList &L, int i, int e) 7 { 8 LinkList p=L; 9 int j = 0; 10 while(p&&j < e) 11 { 12 p = p->next; 13 j++; 14 } 15 if (!p || j > i - 1) 16 { 17 return -1; 18 } 19 LinkList s = (LinkList)malloc(sizeof(LNode)); 20 s->data = e; 21 s->next = p->next; 22 p->next = s; 23 return 1; 24 } 25 26 int ListDelete(LinkList &L, int i, int &e) 27 { 28 LinkList p = L; 29 int j = 0; 30 while(p&&j < i) 31 { 32 p = p->next; 33 j++; 34 } 35 if (!p || j > i - 1) 36 { 37 return -1; 38 } 39 LinkList q = p->next; 40 p->next = q->next; 41 e = q->data; 42 delete[] q; 43 return e; 44 } 45 //尾插法 46 void CreatList(LinkList &L, intn) 47 { 48 LinkList p,q; 49 L = (LinkList)malloc(sizeof(LNode)); 50 L->next = NULL; 51 q = L; 52 for (int i = n; i > 0; i--) 53 { 54 p = (LinkList)malloc(sizeof(LNode)); 55 cin >> p->data; 56 p->next = NULL; 57 q->next = p; 58 q = q->next; 59 } 60 }