#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
using namespace std;
typedef struct LNode {
int data;
struct LNode* next;
}LNode,*LinkList;
//头插法创建链表
LinkList CreatList1(LinkList& L){
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
int d;
scanf("%d", &d);
while (d != 9999) {
LinkList p = (LinkList)malloc(sizeof(LNode));
p->data = d;
p->next = L->next;
L->next = p;
scanf("%d", &d);
}
return L;
}
//尾插法创建链表
LinkList CreatList2(LinkList& L){
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
LinkList r = L;
int d;
scanf("%d", &d);
while (d != 9999) {
LinkList s = (LinkList)malloc(sizeof(LNode));
s->data = d;
r->next = s;
r = s;
scanf("%d", &d);
}
r->next = NULL;
return L;
}
//查找指定为位置的值
LinkList GetElem(LinkList L, int p) {
L = L->next;
int i = 1;
while (L && i < p) {
L = L->next;
i++;
}
return L;
}
//根据值来查找
LinkList Locate(LinkList L, int p) {
L = L->next;
while (L && L->data != p) {
L = L->next;
}
return L;
}
//新结点插入第i个位置
bool ListFrontInsert(LinkList L, int i, int e) {
LinkList p = GetElem(L, i-1);
if (p == NULL) {
return false;
}
LinkList n = (LinkList)malloc(sizeof(LNode));
n->data = e;
n->next = p->next;
p->next = n;
return true;
}
//删除指定位置的值
bool ListDelete(LinkList L,int i) {
LinkList p = GetElem(L, i-1);
if (p==NULL) {
return false;
}
LinkList q = p->next;
p->next = q->next;
free(q);
return true;
}
//打印链表
void printS(LinkList L){
L = L->next;
while (L) {
printf("%3d", L->data);
L = L->next;
}
printf("\n");
}
int main() {
LinkList L = NULL;
CreatList2(L);
printS(L);
//LinkList d01 = GetElem(L, 5);
//printf("%d", d01->data);
//LinkList d02 = Locate(L, 4);
//printf("%d", d02->data);
int a = 2;
/*int num = 654;
ListFrontInsert(L, a, num);
printS(L);*/
ListDelete(L, a);
printS(L);
return 0;
}
单链表
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 基础:结构体(struct)指针 定义:多个结点链接在一起的存储结构,其中每一结点都是同类结构体,包含两部分:数值...
- 元素域 data 用来存放具体的数据。 链接域 prev 用来存放上一个节点的位置。 链接域 next 用来存放下...
- 2021-04-09:rand指针是单链表节点结构中新增的指针,rand可能指向链表中的任意一个节点,也可能指向n...
- //将一个带头结点的单链表A分解为两个带头结点单链表A和B,使得A表中含有原表中序号为奇数元素,而B表中含有原表中...
- 面试题一般会有普通方法和高级方法,高级方法无疑会大大的加分! 题目一:快速找到未知长度单链表的中间节点(腾讯面试题...