/*创建存放项目的节点并添加到列表尾部*/ bool AddItem(Item item, List * plist) { Node * pnode; bool empty; /*用于判断列表是否为空*/ pnode = (Node *)malloc(sizeof(Node)); if(pnode == NULL) /*内存分配失败*/ return false; /*退出函数*/ else { CopyToNode(item, pnode); pnode->next = NULL; empty = ListIsEmpty(plist); if(empty) { plist->head = pnode; plist->tail = pnode; } else { plist->tail->next = pnode; plist->tail = pnode; } plist->size++; /*长度增长*/ return true; } }
//创建存放项目的节点,并把它添加到由plist指向的列表尾部 bool AddItem(Item item, List * plist) { Node * pnew; Node * scan = *plist; pnew = (Node *)malloc(sizeof(Node)); if (pnew == NULL) { return false; } CopyToNode(item, pnew); pnew->next = NULL; if (scan == NULL) { *plist = pnew; } else { while (scan->next != NULL) { scan = scan->next; } scan->next = pnew; } return true; }
/*由plist指向的列表(较慢的实现方法)尾部*/ bool AddItem(Item item, List *plist) { Node *pnew; Node *scan = *plist; pnew = (Node *)malloc(sizeof(Node)); if (pnew == NULL) return false; /*失败时退出*/ CopyToNode(item, pnew); pnew->next = NULL; if (scan == NULL) /*空列表,因此把pnew*/ *plist = pnew; /*放在列表头部*/ else { while (scan->next != NULL) scan = scan -> next; /*找到列表结尾*/ scan->next = pnew; /*把pnew添加到结尾处*/ } return true; }
bool EnQueue(Item item, Queue *pq) { Node *pnew; if (QueueIsFull(pq)) return false; pnew = (Node *)malloc(sizeof(Node)); if (pnew == NULL) { fprintf(stderr, "Unable to allocate memory!\n"); exit(1); } CopyToNode(item, pnew); pnew->next = NULL; if (QueueIsEmpty(pq)) pq->front = pnew; //项目位于队列首端 else pq->rear->next = pnew; pq->rear = pnew; pq->items++; return true; }
/* the list pointed to by plist (slow implementation) */ bool AddItem(Item item, List * plist) { Node * pnew; Node * scan = *plist; pnew = (Node *) malloc(sizeof(Node)); if (pnew == NULL) return false; /* quit function on failure */ CopyToNode(item, pnew); pnew->next = NULL; if (scan == NULL) /* empty list, so place */ *plist = pnew; /* pnew at head of list */ else { while (scan->next != NULL) scan = scan->next; /* find end of list */ scan->next = pnew; /* add pnew to end */ } return true; }
BOOL EnQueue(Item item,Queue * pq) { Qnode * pnew; if(QueueIsFull(pq)) return FALSE; pnew = (Qnode *)malloc(sizeof(Qnode)); if(pnew == NULL) { fprintf(stderr,"Unable allocate memory!\n"); exit(1); } CopyToNode(item,pnew); pnew->next = NULL; if(QueueIsEmpty(pq)) pq->head = pnew; else pq->end->next = pnew; pq->end = pnew; pq->items++; return TRUE; }
/* the end of the list plist points to */ bool AddItem (Item item, List * plist) { Node * pnew; Node * scan = * plist; pnew = (Node *) malloc (sizeof(Node)); if (pnew == NULL) return false; /* fail then quit function */ CopyToNode(item, pnew); pnew->next = NULL; if (scan == NULL) /* empty list, so put pnew */ * plist = pnew; /* to the head of the list */ else { while(scan->next != NULL) scan = scan->next; /* arrive at the end of the list */ scan->next = pnew; /* add pnew to the end of the list */ } return true; }
/* 由plist 指向的列表(较慢的实现方法)尾部 */ bool AddItem(Item item, Head * plist) { Node * pnew; Node * scan = *plist; pnew = (Node *)malloc(sizeof(Node)); if (pnew == NULL) return false; /* 失败时退出函数 */ CopyToNode(item, pnew); pnew->next = NULL; if (scan == NULL){ /* 空列表,因此把pnew */ *plist = pnew; } /* 放在列表头部 */ else{ while (scan->next != NULL){ scan = scan->next; } scan->next = pnew; } return true; }
bool Push(Item item,Stack * pstack){ if(StackIsFull(pstack)){ return false; } Node * pnew; pnew=(Node *)malloc(sizeof(Node)); CopyToNode(item,pnew); pnew->next=NULL; if(pstack->end == NULL){ pstack->head = pnew; pstack->end = pnew; } else{ pstack->end->next = pnew; pstack->end = pnew; } pstack->size++; return true; }