示例#1
0
int main() {
	int array[LINK_LENGTH] = { 1, 3, 4, 2, 9, 6, 7, 5, 0, 8 };
	LinkList L;
	int i = 0;
	NODE *node;

	printf("Array is: ");
	while (i < LINK_LENGTH) {
		printf("%d ", array[i]);
		i++;
	}
	printf("\n");

	//0. create
	printf("Create_List\n");
	L = Create_List(array);
	Print_List(L);

	//1. find
	printf("\n");
	printf("Find_List\n");
	Print_List(L);
	node = Find_List(L, 3);
	Print_NODE(node);

	//2. update
	printf("\n");
	Print_List(L);
	printf("Update_List\n");
	Update_List(L, 3, 23);
	Print_List(L);

	//3. insert
	printf("\n");
	Print_List(L);
	printf("Insert_List\n");
	Insert_List(L, 3, 99);
	Print_List(L);

	//4. delete
	printf("\n");
	Print_List(L);
	printf("Delete_List\n");
	Delete_List(L, 8);
	Print_List(L);

	//5. free
	printf("\n");
	Print_List(L);
	printf("Free resource!\n");
	Free_List(L);
	Print_List(L);
	return 0;
}
示例#2
0
/*
 *	单链表的删除运算
 *  L为链表头指针
 *  K为元素位置
 *  成功返回0,失败返回-1.
 */
int Delete_List(LinkList L, int k)
{
	LinkList p, q;
	if (k==1) { 
		p = L;
	} else {
		p = Find_List(L, k-1);
	}

	if (p == NULL)
		return -1;

	q = p->link;
	p->link = q->link;
	free(q);
	return (0);
}
示例#3
0
/*
 * 	单链表的插入运算 
 *  L为链表的头指针,
 *  K为在链表插入的位置
 *  elem为元素值
 */
int Insert_List(LinkList L, int k, int elem)
{
	LinkList p, q;
	if (k == 1) { 
		p = L;
	}
	else {
		// 查找表中第k-1个元素,原因是要在k-1个位置后插入新元素.
		p = Find_List(L, k-1);
	}
	
	if (p == NULL)
		return -1;
	
	q = (NODE*)malloc(sizeof(NODE));
	q->data = elem;
	q->link = p->link;
	p->link = q;
	return 0;
}