# 数据结构——链表基本操作

//链表

#include<iostream>
using namespace std;

#define DataType int

//结点结构体定义
struct ListNode {
DataType data;
ListNode *next;
};
/*
1.数据域：要存储的数据
2.指针域：指向后一结点的地址
*/

//结点创建
ListNode* ListCreateNode(DataType data) {
ListNode* node = (ListNode*)malloc(sizeof(ListNode));
node->data = data;
node->next = NULL;
return node;
}

//链表创建——头插法
while (n--) {
vtx = ListCreateNode(a[n]);
//第一步：创建一个新的结点

//第二步：对结点内容进行设置（此时只有指针域未设置）
//设置其指针指向后继结点(这也是对头部进行设置）

//第三步：将头结点指针指向vtx（目前来讲新的头结点）

}
//返回到链表头结点的位置

}

//链表打印
while (vtx != NULL) {
cout << vtx->data << "->";
vtx = vtx->next;
}
cout << "NULL" << endl;
}

//链表结点索引
ListNode* ListGetNode(ListNode* head, int i) {
for (int j = 0;j < i; j++) {
if (vtx == NULL)return NULL;
vtx = vtx->next;
}
return vtx;
}

//链表元素查找
ListNode* ListFindNodeByValue(ListNode* head, DataType n) {
while (vtx != NULL) {
if (vtx->data == n)return vtx;
vtx = vtx->next;
}
return NULL;
}

//链表结点插入
ListNode* ListInsertNode(ListNode* head, int i,DataType x) {
ListNode* pre = head, * vtx,  * aft;
for (int j = 0; j < i; j++) {
if (pre == NULL)return NULL;
pre = pre->next;
}
if (pre == NULL)return NULL;
vtx = ListCreateNode(x);
aft = pre->next;
vtx->next = aft;
pre->next = vtx;
return vtx;
}

//结点删除操作
ListNode* ListDeleteNode(ListNode* head, int i) {
ListNode* pre, * del, * aft;
return NULL;
}
if (i == 0) {
free(del);
}
for (int j = 0; j < i - 1; j++) {
if (pre != NULL)pre = pre->next;
}
if (pre == NULL || pre->next == NULL) {
}
del = pre->next;
aft = del->next;
pre->next = aft;
free(del);
}

int main() {
int a[5] = { 1,3,8,2,6 };

cout << get1->data << "\t" << get1->next << endl;

cout << get2->data << "\t" << get2->next << endl;

ListNode* get3 = ListInsertNode(head, 4, 5);
cout << get3->data << "\t" << get3->next << endl;

return 0;
}

• 0
点赞
• 0
评论
• 0
收藏
• 一键三连
• 扫一扫，分享海报

08-07

12-29
06-27 7891
10-10 2414
05-09 2054
09-27
09-27
11-14
12-14
08-09
03-25 324