指针——可能我学的还只是c++的皮毛

Posted whff521

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针——可能我学的还只是c++的皮毛相关的知识,希望对你有一定的参考价值。

C. 线性链表的插入与删除

单点时限: 2.0 sec

内存限制: 256 MB

实现线性链表的插入与删除操作

只需完成给定函数的定义。

NODE* insertLinklist(NODE* head, int tar, int val) 
   // TODO


NODE* deleteLinklist(NODE* head, int tar) 
   // TODO

其中

NODE表示链表的结构体,定义如下

typedef struct node

    int data;   //存储数据
    struct node* next;  //指向下一个节点的指针
 NODE;

head指向链表的头结点,如果链表为空,headNULL

显然,为了完成该链表维护工作,你需要实现上述两个辅助函数

插入操作中:

tarval表示将存放新值val的节点插入到值为tar的节点之后

(保证当链表不为空时,值为tar的节点一定在链表中,若有多个节点存放的值都为tar,则插入到第一个之后,若链表为空,则无视tar值,将val插入到head后面,即将head指向这个新的节点)

删除操作中:

tar表示删除存放值为tar的节点(若有多个节点存放的值是tar,则删除第一个)

如果链表为空则忽略当前操作

提示

只能使用C或者C++提交。

对于C/C++,判题程序类似,如下:

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

typedef struct node

    int data;
    struct node* next;
 NODE;

NODE* insertLinklist(NODE* head, int tar, int val);
NODE* deleteLinklist(NODE* head, int tar);

/* 你的代码将会被嵌入在这个位置 */

int main()

    /* 输入及其他处理,细节隐藏不表 */

    NODE* head = createLinklist(/* 创建链表,细节隐藏不表 */);    

    for (/* 若干操作,细节隐藏不表 */)
        if(/* 判断插入还是删除,细节隐藏不表 */)
            head = insertLinklist();
        else
            head = deleteLinklist();

    /* 后续判题,细节隐藏不表 */

    return 0;



虽说这只是一道不考的水题,但是弄得我头都大了;
NODE* insertLinklist(NODE* head, int tar, int val) 

    if(head==NULL)//
    
        NODE* p=(NODE*)malloc(sizeof(NODE));
        p->data=val;
        p->next=NULL;
        head=p;
    
    else
    
        NODE* p=head;
        NODE* pnew=(NODE*)malloc(sizeof(NODE));//动态申请指针 
        while(p->data!=tar)
        
            p=p->next;
        
        pnew->data=val;
        pnew->next=p->next;
        p->next=pnew;
    
    
    return head;
 

NODE* deleteLinklist(NODE* head, int tar)

    if(head==NULL) return head;
    if(head->data==tar)
    
        head=head->next;
        return head;
    
    NODE* last=head;
    NODE* now=head->next;
    while(now->data!=tar)
    
        now=now->next;
        last=last->next;
    
    last->next=now->next;
    return head;

指针还是用->吧,不然会CE;

NODE* p和NODE *p等价,看习惯;

还有要注意指针=指针,类型要看好;

如果要找到一个变量的地址,用int *p=&a;

&取地址

 

以上是关于指针——可能我学的还只是c++的皮毛的主要内容,如果未能解决你的问题,请参考以下文章

FFT板子

容器(vector)和指针(ptr)的区别

有哪些 C++ 智能指针实现可用?

指向 C++ 类的 C 结构指针

C程序第四次作业

周学习总结