9.25 日总结

好累啊,今天学习了线性表的东西,其中当时在课上学习创建单链表的时候,对头插法和尾插法理解不是很好,导致今天下午做题的时候理解的就不好,而且对于c++的链表创建方式,和C还有JAVA的链表创建方式真的自己感觉学的并不好,能理解他的原理,但是其中的琐碎知识点想不明白,一直从下午的4点多,搞到了晚上的9点半还没有吃完饭,真的对于这个结构体,指针,感觉理解的好费劲,感觉理解好难,这是我最后所写的代码(今天一天终于结束了):

include

using namespace std;

typedef struct LNode
{
int length;
int Data;
struct LNode next;
}LNode,
LinkedList;

void InitList(LinkedList &L)//初始化
{
L = new LNode;//创建头节点
L->length = 0;
L->next = nullptr;
}
void CreateList(LinkedList &L,int n)//尾插法
{
L = new LNode;
L->next = nullptr;
LinkedList r = L;
int totalLength = 0;
for(int i = 0;i < n;i++){
LinkedList p = new LNode;
int data;
cin>>data;
p->Data = data;
p->next = nullptr;
r->next = p;
r = p;
totalLength++;
}
L->length = totalLength;
}

void addAtindex(LinkedList &L, int index, int val)
{
if (index < 0 || index > L->length)
return;
LNode *p = L;
int j = 0;
while (p && j < index)
{
p = p->next;
j++;
}
if (!p || j > index)
return;
LNode *s = new LNode;
s->Data = val;
s->next = p->next;
p->next = s;
L->length++;
}

void Deleteatindex(LinkedList &L,int index)
{
if (index <=0 || index > L->length)
return;
LNode *p = L;
int j = 0;
while(p->next&& j<index - 1){
p = p->next;
j++;
}
if(!(p->next)||j > index - 1)
return;
LNode *q = p->next;
p->next = q->next;
delete q;
L->length--;
}
int main()
{
int n;
LinkedList L;
cin>>n;
InitList(L);
CreateList(L,n);
int N;
cin>>N;
int b,c,d;
while(N--){
cin>>b;
if(b==0){
cin>>c>>d;
addAtindex(L,c,d);
}else{
cin>>c;
Deleteatindex(L,c);
}
}
LNode *p = L->next;
while(p){
cout<Data<<" ";
p = p->next;
}
return 0;
}

posted @   真的不会qiao代码  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示