# include<iostream> typedef int ElemType; typedef struct Lnode { ElemType data; struct Lnode* next; }Lnode, *Linklist; bool InitList_L(Linklist& L) { /* 初始化单向链表。 */ L = new Lnode; if (!L) return false; L->next = NULL; return true; } bool CreateList_H(Linklist& L) { /* 创建单向链表。 */ int x = 1; std::cout << "请输入您要插入的数字" << std::endl; std::cin >> x; while (x != -1) { /* 使用头插法建立单向链表。 */ Linklist p; p = new Lnode; if (!L) return false; p->data = x; p->next = L->next; L->next = p; std::cout << "请输入您要插入的数字" << std::endl; std::cin >> x; } return true; } bool CreateList_T(Linklist L) { /* 使用尾插法,建立单向链表。 */ int x; std::cout << "请输入您要插入的数字,-1表示结束" << std::endl; std::cin >> x; Linklist p, q; p = L; // 创建尾部指针。 while (x != -1) { q = new Lnode; if (!q) return false; q->data = x; q->next = NULL; p->next = q; p = q; std::cout << "请输入您要插入的数字,-1表示结束" << std::endl; std::cin >> x; } } void PrintList(Linklist& L) { Linklist p; p = L->next; while (p != NULL) { std::cout << p->data << std::endl; p = p->next; } } bool GetElem_L(Linklist L, int i, int& e) { /* 获取列表第i个元素的值 */ Linklist q; q = L->next; if (i < 1) return false; if (!q) return false; int j = 0; while (j < i - 1) { q = q->next; if (!q) return false; j++; } e = q->data; return true; } bool LocateElem_L(Linklist L, int e) { /* 查找单向链表中的元素; */ Linklist p; p = L; while (p && p->data != e) { p = p->next; } if (!p) return false; return true; } bool ListInsert_L(Linklist& L, int i, int e) { Linklist p, q; p = L->next; if (i < 1) return false; int j = 0; while (j < i - 2 && p) { p = p->next; j++; } if (j != i - 2) return false; q = new Lnode; q->data = e; q->next = p->next; p->next = q; return true; } bool ListDelete_L(Linklist& L, int i) { Linklist p, q; p = L->next; int j = 0; while (p && j < i - 2) { p = p->next; j++; } if (j != i - 2) return false; q = p->next; p->next = p->next->next; delete q; return true; } int main() { Linklist L; InitList_L(L); CreateList_H(L); //CreateList_T(L); int x, e; //std::cout << "请输入您要获取第几个元素的值" << std::endl; //std::cin >> x; //GetElem_L(L, x, e); //std::cout << "程序获取的元素为:" << e << std::endl; //std::cout << "请输入您要查找的数据" << std::endl; //std::cin >> e; //std::cout << LocateElem_L(L, e) << std::endl; //std::cout << "请输入您要插入元素的位置" << std::endl; //std::cin >> x; //std::cout << "请输入您要插入的元素" << std::endl; //std::cin >> e; //ListInsert_L(L, x, e); std::cout << "请输入您要删除元素的位置" << std::endl; std::cin >> x; ListDelete_L(L, x); PrintList(L); return true; }