LinkList.h头文件 #ifndef LINKLIST_H_H #define OK 0 #define ERROR -1 typedef int type; typedef struct LNode { type elem; struct LNode *next; }LNode,*LinkList; int create_linkList(LinkList); int init_linkList(LinkList*); int print_linkList(LinkList); int insert_linkList(LinkList, int, LNode*); int make_node(LNode**); int clear_linkList(LinkList); int delete_linkList(LinkList , type); #endif LinkList.cpp文件 #include "LinkList.h" #include <stdio.h> #include <stdlib.h> //生成结点 int make_node(LNode **node) { if(!((*node) = (LNode*)malloc(sizeof(LNode)))) return ERROR; (*node)->next = NULL; return OK; } //初始化单链表 int init_linkList(LinkList *llist) { (*llist) = (LinkList)malloc(sizeof(LNode)); if(!(*llist)) return ERROR; (*llist)->next = NULL; (*llist)->elem = 0; return OK; } //建立链表 int create_linkList(LinkList llist) { type num; LNode *node, *tail; tail = llist; printf("input num: "); scanf("%d",&num); while(num != 0) { if(make_node(&node)) return ERROR; node->elem = num; //node->next = NULL; tail->next = node; tail = node; node = NULL; llist->elem++; scanf("%d",&num); } return OK; } int clear_linkList(LinkList llist) { if(llist->next == NULL) return ERROR; LinkList tmp = llist->next; llist->next = NULL; LinkList tmp1; while(tmp->next != NULL) { tmp1 = tmp; tmp = tmp->next; free(tmp1); } free(tmp); llist->elem = 0; return OK; } int insert_linkList(LinkList llist, int i, LNode *node) { if(!llist) return ERROR; if(i < 0 || i > llist->elem) return ERROR; LNode *tmp = llist; for(int j = 0 ; j < i ; j++) tmp = tmp->next; node->next = tmp->next; tmp->next = node; llist->elem++; return OK; } int delete_linkList(LinkList llist, type e) { if(llist->next == NULL) return ERROR; LinkList tmp = llist->next; LinkList tmp1 = llist; LinkList tmp2 = NULL; while(tmp->next != NULL) { if(tmp->elem == e) { tmp1->next = tmp->next; tmp2 = tmp; tmp = tmp->next; free(tmp2); continue; } tmp1 = tmp; tmp = tmp->next; } if(tmp->elem == e) { tmp1->next = NULL; free(tmp); } return OK; } int print_linkList(LinkList llist) { if(!llist->next) return ERROR; LinkList tmp = llist->next; while(tmp->next != NULL) { printf("%d ",tmp->elem); tmp = tmp->next; } printf("%d/n",tmp->elem); return OK; }