王道:c链表

输入3 4 5 6 7 9999一串整数,9999代表结束,通过头插法新建链表,并输出,通过尾插法新建链表并输出。

注意输出要采用如下代码(因为OJ判题对空格敏感,因此需要用下面的打印代码来做):

//打印链表中每个结点的值

#include <stdio.h>
#include <stdlib.h>

typedef int ElementType ;
typedef struct LNode
{
    ElementType data;//数据域
    struct LNode *next;//指针域
    //一个内容包含有数据和next指针
}LNode,*LinkList;
void list_header_insert(LNode *&L){
    L=(LNode *) malloc(sizeof(LNode));
    L->next=NULL;
    LNode *s;
    ElementType x;
    scanf("%d",&x);
    while (x!=9999)
    {
        s=(LNode *) malloc(sizeof(LNode));
        s->data=x;
        s->next=L->next;
        L->next=s;
        scanf("%d",&x);
    }
}
void list_tail_insert(LNode *&L){
    L=(LNode *) malloc(sizeof(LNode));
    LNode *s,*r=L;
    ElementType x;
    scanf("%d",&x);
    while (x!=9999)
    {
        s=(LNode *) malloc(sizeof(LNode));
        s->data=x;
        r->next=s;
        r=s;
        scanf("%d",&x);
    }
    r->next=NULL;
}
void Print(LinkList L)
{
    L=L->next;
    while(L)
    {
        printf("%d",L->data);
        L=L->next;//eg 3 4 5,头插 走到3,
        if(L!=NULL){//L代表的是next,所以是L的next指向NULL,3的next=null
            printf(" ");
        }
    }
    printf("\n");
}
int main() {
    LinkList L;
    list_header_insert(L);
    Print(L);
    list_tail_insert(L);
    Print(L);
    return 0;
}

王道408链表是指《王道计算机考研系列:数据结构(上)》中的一道考题,要求使用C语言实现链表的基本操作。链表是一种常用的数据结构,与数组相比,链表的大小可以动态变化,不需要预先指定大小。 链表的基本操作包括:初始化、插入元素、删除元素、遍历元素、搜索元素和销毁链表。 1. 初始化:初始化一个空链表,即创建一个头节点,并将头节点的指针域设置为空。 2. 插入元素:向链表中插入一个新的节点,可以在链表的任意位置插入。具体操作为:创建一个新的节点,将新节点的数据赋值给新节点的数据域,将新节点的指针域指向需要插入位置的下一个节点,将前一个节点的指针域指向新节点。 3. 删除元素:从链表中删除一个节点,可以根据节点的位置或者特定的值进行删除。具体操作为:找到该节点的前一个节点,将前一个节点的指针域指向该节点的下一个节点,释放该节点内存空间。 4. 遍历元素:从链表的头节点开始,通过遍历节点的指针域,依次输出链表中的所有元素,直到指针域为空。 5. 搜索元素:根据给定的值,在链表中搜索相应的节点。具体操作为:从头节点开始,通过遍历节点的数据域,逐个比较节点中的值,如果找到匹配的值,返回该节点的地址;如果遍历完链表仍未找到匹配的值,返回空。 6. 销毁链表:释放链表中所有节点的内存空间,以免内存泄漏。具体操作为:循环遍历链表,释放每一个节点的内存空间,同时将链表的头节点设置为空。 通过以上的基本操作,可以在C语言中实现对链表的增删改查等操作。但需要注意的是,具体的实现可能会根据题目的要求有所不同,例如可能需要处理链表中的特殊情况(如删除头节点)或者自定义其他操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值