指针——可能我学的还只是c++的皮毛
发布时间:2020-12-16 10:49:34 所属栏目:百科 来源:网络整理
导读:C. 线性链表的插入与删除 单点时限: 2.0 sec 内存限制: 256 MB 实现线性链表的插入与删除操作 只需完成给定函数的定义。 NODE * insertLinklist ( NODE * head , int tar , int val ) { // TODO } NODE * deleteLinklist ( NODE * head , int tar ) { // TOD
C. 线性链表的插入与删除
单点时限: 2.0 sec 内存限制: 256 MB 实现线性链表的插入与删除操作 只需完成给定函数的定义。 NODE* insertLinklist(NODE* head,int tar,int val) { // TODO } NODE* deleteLinklist(NODE* head,int tar) { // TODO }
其中
typedef struct node { int data; //存储数据 struct node* next; //指向下一个节点的指针 } NODE;
显然,为了完成该链表维护工作,你需要实现上述两个辅助函数 插入操作中:
删除操作中:
如果链表为空则忽略当前操作 提示只能使用C或者C++提交。 对于C/C++,判题程序类似,如下: #include <stdio.h> #include <stdlib.h> typedef struct node { int data; struct node* next; } NODE; NODE* insertLinklist(NODE* head,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; &取地址 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |