DS链表-类实现
【摘要】
类实现DS链表
最开始的输入链表节点的代码是这样的,但是问题就随之而来了,我逆序输出了。 解决这个问题的话应该是两种办法: ①:解决输出的顺序,从后往前输出; ②:解决输入的顺序,上述代码采...
类实现DS链表
最开始的输入链表节点的代码是这样的,但是问题就随之而来了,我逆序输出了。
解决这个问题的话应该是两种办法:
①:解决输出的顺序,从后往前输出;
②:解决输入的顺序,上述代码采用的是逆序输入(先输入的放到后面,即头插法)
而后我更改了代码输入方式,采用新写法如下:
新方法采用的是双指针,多加了一个指针的写法,较为简单。
这里加入一些语法点的解释:
1、ListNode *LL_index(int i) 的意思:
返回ListNode节点的指针。
2、ListNode *p = new ListNode();
这句话的意思是默认调用ListNode类new开辟空间生成一个新节点,并用p指针作为节点的指针。
可以去掉(),也可以在()中加入0、-1或1这样的数值,默认生成节点的data为0、-1、1。
这里放入全部代码:
#include <iostream>
using namespace std;
#define ok 0
#define error -1
class ListNode
{
public:
int data;
ListNode *next;
ListNode()
{
next=NULL;
}
};
class LinkList
{
public:
ListNode *head;
int len;
LinkList()
{
head = new ListNode();
len = 0;
}
~LinkList()
{
ListNode *p,*q;
p=head;
while(p!=NULL)
{
q=p;
p=p->next;
delete q;
}
len=0;
head=NULL;
}
ListNode *LL_index(int i)
{
int j=0;
ListNode *p=head;
while(p&&j<i)
{
p=p->next;
j++;
}
if(!p)
return NULL;
else
return p;
}
int LL_get(int i)
{
if(i<=0||i>len) return error;
int j=0;
ListNode *p=head;
while(p&&j<i)
{
p=p->next;
j++;
}
if(!p)
return error;
else
return p->data;
}
int LL_insert(int i,int item)
{
if(i<=0||i>len+1)
return error;
ListNode *p,*s;
p=LL_index(i-1);
s=new ListNode();
s->data=item;
s->next=p->next;
p->next=s;
len++;
return ok;
}
int LL_del(int i)
{
if(i<=0||i>len)
return error;
ListNode *p,*s;
p=LL_index(i-1);
s=p->next;
p->next=s->next;
delete s;
len--;
return ok;
}
void LL_display()
{
ListNode *p;
p=head->next;
while(p)
{
cout<<p->data<<' ';
p=p->next;
}
cout<<endl;
}
};
int main()
{
int n;
int data;
LinkList list;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>data;
list.LL_insert(i,data);
}
list.LL_display();
for(int j=0;j<2;j++)
{
int i;
cin>>i>>data;
if(list.LL_insert(i,data)!=-1)
{
list.LL_display();
}
else cout<<"error"<<endl;
}
for(int j=0;j<2;j++)
{
int i;
cin>>i;
if(list.LL_del(i)!=-1)
{
list.LL_display();
}
else cout<<"error"<<endl;
}
for(int j=0;j<2;j++)
{
int i;
cin>>i;
if(list.LL_get(i)!=-1)
{
cout<<list.LL_get(i);
}
else cout<<"error"<<endl;
}
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
文章来源: blog.csdn.net,作者:洲的学习笔记,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_51484460/article/details/115106147
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)