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
| #include<stdio.h> #include<stdlib.h> typedef struct LNode { int data; struct LNode *next; }LNode, *LinkList; bool InitList(LinkList &L); bool Empty(LinkList L); LinkList ListTailInsert(LinkList &L); LNode* GetElem(LinkList L, int i); int length(LinkList L); int main(void) { LinkList L; L = ListTailInsert(L);
if (!Empty(L)) { int num = GetElem(L,3)->data; printf("第3个节点的值为:%d\n", num); printf("链表长度为:%d\n", length(L)); } 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; } }
LNode* GetElem(LinkList L, int i) { if (i < 0) { return NULL; } LNode *p; int j = 0; p = L; while (p!=NULL && j<i) { p = p->next; j++; } return p; }
LinkList ListTailInsert(LinkList &L) { int x; L = (LinkList)malloc(sizeof(LNode)); LNode *s, *r = L; scanf("%d", &x); while(x!=9999) { s = (LNode *)malloc(sizeof(LNode)); s->data = x; r->next = s; r = s; scanf("%d", &x); } r->next = NULL; return L; }
int length(LinkList L) { int len = 0; LNode *p = L; while (p->next != NULL) { p = p->next; len++; } return len; }
|