Ejemplo n.º 1
0
void showMenu()
{
 int choose=0;
 do
 {
  printf("\n");
  printf("1. add element at ends of list\n");
  printf("2. add element at start of list\n");
  printf("3. add element at middle of list\n");
  printf("4. remove element from starts of list\n");
  printf("5. remove element from middle of list\n");
  printf("6. remove element from ends of list\n");
  printf("7. create list\n");
  printf("8. remove list\n");
  printf("9. exit\n");
  scanf("%i", &choose);
  switch (choose)
  {
   case 1: addLastElement();break;
   case 2: addFirstElement();break;
   case 3: addMiddleElement();break;
   case 4: removeFirstElement();break;
   case 5: removeMiddleElement();break;
   case 6: removeLastElement();break;
   case 7: createList();break;
   case 8: removeList();
  }
 }
 while(choose!=9);
}
Ejemplo n.º 2
0
//addElementI() adds data at an arbitraty location, i, in the list
//list : a pointer to the LinkedList to add the data to
//data : a pointer to the data to be added
//			assumes that data is correctly sized based on list->elementSize
//i : the data added becomes the ith ListElement
// 			if i>number of elements, returns LLOVERRUN
//			if i<=0, element is inserted at the begining of the list
//returns : a  status code as defined in linklist.h
int addElementI(LinkedList list, const void* data, int i){
	
	ListElement* oldIthElement = iterate(list, i);
	if(oldIthElement==NULL) {
		oldIthElement = iterate(list,i-1);
		if(oldIthElement==NULL) return LLOVERRUN;
		//case for inserting at end of list
		return addLastElement(list, data);
	}
		
	ListElement* newElement = createElement(data, list->elementSize);

	newElement->prevElement = oldIthElement->prevElement;
	newElement->nextElement = oldIthElement;
	oldIthElement->prevElement = newElement;

	if(newElement->prevElement==NULL) list->begining = newElement;
	else{
		ListElement* beforeInsert = newElement->prevElement;
		beforeInsert->nextElement = newElement;
	}

	return LLSUCCESS;
}