在学习数据结构单链表的时候随手写的代码,发到这里供大家参考参考。
目录
一、实验代码
二、运行结果
总结
一、实验代码
代码如下:
#include二、运行结果using namespace std; typedef struct LNode { int data; struct LNode* next; }LNode, * LinkList; //初始化链表 void initList(LinkList& L) { L = (LinkList)malloc(sizeof(LNode)); L->next = NULL; } //尾插法建立单链表 void list_tailInsert(LinkList &L) { int x; LNode* s, * r = L; cout << "请输入元素:(输入9999结束输入)"; cin >> x; while (x != 9999) { s = (LNode*)malloc(sizeof(LNode)); s->data = x; r->next = s; r = s; cout << "请输入元素:"; cin >> x; } r->next = NULL; } //打印单链表 void printmyList(LinkList L) { LNode* p = L->next; cout << "打印链表:" << " "; while (p != NULL) { cout << p->data << " "; p = p->next; } cout << endl; } //按序号查找节点 LNode* GetElem(LinkList L, int i) { if (i < 0) return NULL; int j = 0; LNode* p = L; while (p != NULL && j < i) { p = p->next; j++; } return p; } //按值查找节点 LNode* LocateElem(LinkList L, int e) { LNode* p = L->next; while (p != NULL) { p = p->next; if (p->data == e) return p; } return NULL; } //插入节点 bool insertElem(LinkList& L, int i, int e) { if (i < 1) return false; LNode* p = GetElem(L, i - 1); LNode* s; s = (LNode*)malloc(sizeof(LNode)); s->data = e; s->next = p->next; p->next = s; return true; } //删除节点 bool delElem(LinkList& L, LNode *p) { if (p == NULL) return false; LNode* s = p->next; p->data = s->data; p->next = s->next; free(s); return true; } //求表长 int get_list_length(LinkList L) { int i = 0; LNode* p = L->next; while (p != NULL) { p = p->next; i++; } return i; } int main() { LinkList L; initList(L); list_tailInsert(L); printmyList(L); cout << "打印链表第2个元素的next指针与第三个元素" << endl; cout << GetElem(L, 2)->next << endl; cout << GetElem(L, 3) << endl; cout << "在链表第2个位置插入520" << endl; insertElem(L, 2, 520); cout << "查找链表元素520,并打印" << endl; if (LocateElem(L, 520) != NULL) cout << LocateElem(L, 520)->data << endl; printmyList(L); LNode* p; p = GetElem(L, 3); cout << "删除元素:"< data << endl; delElem(L, p); printmyList(L); cout <<"链表长度为:"<< get_list_length(L) << endl; }
运行结果如下:
总结
以上代码可以直接在编译器上运行,希望这篇文章能让大家对单链表的基本操作更加熟悉,如有没考虑周全之处,还望指出。



