C语言尾插法创建学生单链表,c语言——单链表分拆——头插法创建链表,尾插法生成链表...

#if 1

#include

#include

#include

using namespace std;

struct Node

{

int data;

Node *next;

};

//初始化

Node *init()

{

Node *head=new Node;

head->next=NULL;

return head;

}

//头插法创建节点

void insetList(Node *head,int i)

{

Node *cur=new Node;

cur->data=i;

cur->next=head->next;

head->next=cur;

}

//链表A,B生成

void CreateList(Node *head_A)

{

for(int i=-8;i<10;i++)

{

insetList(head_A,++i);

}

}

//打印链表

void print(Node *head)

{

Node *temp=head->next;//防止头指针移动

while(temp)

{

cout<data<

temp=temp->next;

}

}

//拆分链表A,链表C源于A。生成链表B

void SplitList(Node *head_A,Node *List_C,Node *List_B)

{

Node *pa=head_A->next;//pa指向链表A的首元节点

Node *pc=List_C;//pc指向C的头节点,为移动指针是为了保持头指针不变

Node *pb=List_B;//链表head_B头指针给pb,pb为移动指针是为了保持头指针不变

while(pa)//A链表遍历结束即退出

{

if(pa->data < 0)

{

pc->next=pa;//先存A链表的节点

pc=pa;//pc指向pa,pc前进一个节点

}

//尾插法创建B链表

else

{

Node *cur=new Node; //生成B链表节点

cur->data=pa->data; //将A表大于0的数据存入链表B中

pb->next=cur; //pb指向新生成的节点

cur->next=NULL; //将新节点指针域置空

pb=cur; //pb移动至新节点位置

}

pa=pa->next;//pa向A链表下一节点移动

}

}

void main()

{

Node *head_A=init();//链表A初始化头节点

Node *List_B=init();//链表B初始化头节点

//链表C初始化,结构体指针记得初始化头节点

Node *List_C=head_A;//

//创建链表A

CreateList(head_A);

//打印链表A

cout<

print(head_A);

cout<

//调用函数分拆链表A

SplitList(head_A,List_C,List_B);

//打印链表C

cout<

print(List_C);

//打印链表B

cout<

print(List_B);

cout<

system("pause");

}

#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值