单链表

#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辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容