1. 程式人生 > 實用技巧 >演算法—第二週(8月1日——8月7日)

演算法—第二週(8月1日——8月7日)

單鏈表

建立,增加,刪除

 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, int
n) 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 }