1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| #include<stdio.h> #include<stdlib.h> typedef struct LNode { int data; struct LNode *next; }LNode, *LinkList; bool InitList(LinkList &L); bool Empty(LinkList L); bool ListInsert(LinkList &L, int i, int e); bool ListDelete(LinkList &L, int i, int &e); int main(void) { LinkList L; InitList(L); if (Empty(L)) { printf("链表为空!\n"); }
ListInsert(L, 1, 11); ListInsert(L, 2, 22); ListInsert(L, 3, 33); ListInsert(L, 4, 44); ListInsert(L, 5, 55); ListInsert(L, 6, 66); ListInsert(L, 7, 77); ListInsert(L, 8, 88);
if (!Empty(L)) { printf("插入成功!"); }
int e = 0; ListDelete(L, 8, e);
return 0; }
bool InitList(LinkList &L) { L = (LNode *)malloc(sizeof(LNode)); if (L == NULL) { return false; } L->next = NULL; return true; }
bool Empty(LinkList L) { if (L->next == NULL) { return true; } else { return false; } }
bool ListInsert(LinkList &L, int i, int e) { if (i < 1) { return false; printf("插入失败!\n"); } LNode *p; int j = 0; p = L; while (p != NULL && j < i-1) { p = p->next; j++; } if (p == NULL) { return false; printf("插入失败!\n"); } LNode *s = (LNode *)malloc(sizeof(LNode)); s->data = e; s->next = p->next; p->next = s; return true; }
bool ListDelete(LinkList &L, int i, int &e) { if (i < 1) { return false; } LNode *p; int j = 0; p = L; while(p != NULL && j < i-1) { p = p->next; j++; }
if (p==NULL) { return false; } if (p->next == NULL) { return false; } LNode *q = p->next; e = q->data; p->next = q->next; free(q); return true; }
|