主函数为:
#include <iostream> using namespace std; typedef int eletype; struct Node { eletype data; Node * next; }; //typedef struct Node *LinkList; void createLinkList(Node * L, int n); void showLinkList(const Node * L, int n); void insertLinkList(Node * L, int location, Node * e, int & n); void deleteLinkList(Node * L, int location, int & n); void clearLinkList(Node * L, int & n); int main() { int number; cout << "Please enter the number of linklist: "; cin >> number; Node * LinkList; //链表的头指针 LinkList = (Node *)malloc(sizeof(Node)); //为链表动态分配存储空间 LinkList->next = NULL; LinkList->data = number; //头指针的初始化 createLinkList(LinkList, number); showLinkList(LinkList, number); //实现在第loaction1位置处插入节点e int location1; cout << "Please enter a location of insert: "; cin >> location1; while (location1<=0 || location1>number+1) { cout << "The loaction input is error, please enter a location ranges 1 to " << number+1 << endl; cout << "Please enter a location again: "; cin >> location1; } Node * e; e = (Node *)malloc(sizeof(Node)); cout << "Please enter the element of insert: "; cin >> e->data; insertLinkList(LinkList, location1, e, number); showLinkList(LinkList, number); //实现在location2位置处实现删除节点e int location2; cout << "Please enter a location of delete: "; cin >> location2; while (location2<=0 || location2>number) { cout << "The loaction input is error, please enter a location ranges 1 to " << number << endl; cout << "Please enter a location again:"; cin >> location2; } deleteLinkList(LinkList, location2, number); showLinkList(LinkList, number); //实现单链表的整表删除 clearLinkList(LinkList, number); cout << "The number of data is " << number << endl; system("pause"); return 0; }创建线性表的链式存储结构表函数为:
void createLinkList(Node * L, int n) { Node * p; for (int i = 0; i < n; i++) { p = (Node *)malloc(sizeof(Node)); cout << "Please enter the data of " << n-i << "-th:"; cin >> p->data; p->next = L->next; L->next = p; } }对链式存储结构插入一个节点函数为:
void insertLinkList(Node * L, int location, Node * e, int & n) { for (int i = 0; i < location-1; i++) { L = L->next; } e->next = L->next; L->next = e; n++; }对链式存储结构删除一个节点的函数为:
void deleteLinkList(Node * L, int location, int & n) { Node * e; for (int j = 0; j < location-1; j++) { L = L->next; } e = L->next; cout << "The delete emelemt is " << e->data << endl; L->next = e->next; free(e); n--; }显示链式存储结构中的元素和地址的函数为:
void showLinkList(const Node * L, int n) { Node * p; p = L->next; for (int i = 0; i < n; i++) { cout << "the data of " << i+1 << "-th is " << p->data << endl; cout << "The " << i+1 << "-th address is " << p << endl; p = p->next; } }单链表整表删除的函数为:
void clearLinkList(Node * L, int & n) { int number = n; for (int i = 0; i < number; i++) { Node * q; q = L->next; L->next = q->next; free(q); n--; } L->next = NULL; }这是我自己的代码实现,如果你有什么好的代码实现方法希望可以互相学习。
