自己写的链表的小程序

来源:互联网 发布:打码平台源码 编辑:程序博客网 时间:2024/06/15 17:28

自己写的关于链表的小程序。baodian13_1.cpp

//实现单链表的建立,测长,打印功能#include  <iostream>#include <cstdio>#include <iomanip>using namespace std;typedef struct Node{int data;struct Node* next;}Node,*LinkList;//单链表的建立//数据从键盘输入,规定data=0,数据输入停止LinkList Creat_linklist(){ int cycle=1;//用于控制循环LinkList L=(LinkList)malloc(sizeof(Node));//建立的新链表LinkList temp=L;//指向链表的尾接点if(NULL==L){cout<<"Failed to malloc a new Linklist!";return NULL;}L->next=NULL;//建立空的头结点while(cycle){int data;//用于存放键盘中输入的数据cout<<"Please input the data:"<<endl;    cin>>data;    if(data!=0)    {   LinkList s=(LinkList)malloc(sizeof(Node));   s->data=data;//新建节点赋初值   s->next=NULL;   temp->next=s;//建立链接,更新链表   temp=temp->next;    }else{cycle=0;}}return L;}//单链表的测长int GetLength_Linklist(LinkList L){if(NULL==L){cout<<"There is no node!"<<endl;}if (NULL==L->next){cout<<"The linklist is empty!"<<endl;}int i=0;LinkList temp=L->next;while(NULL!=temp){i++;temp=temp->next;}return i;}//单链表的打印void Print_Linklist(LinkList L){if(NULL==L){cout<<"There is no node!"<<endl;}if (NULL==L->next){cout<<"The linklist is empty!"<<endl;}LinkList temp;cout<<"链表的打印"<<endl;for (temp=L->next;NULL!=temp->next;temp=temp->next){cout<<setw(3)<<temp->data<<"->";}cout<<setw(3)<<temp->data;cout<<endl;}int main(){LinkList L=Creat_linklist();Print_Linklist(L);int i=GetLength_Linklist(L);cout<<"链表的长度:"<<i<<endl;return 0;}

//实现删除节点值为num的节点

//num--要删除的节点值

LinkList   Node_Delete(LinkList L,int num){if(NULL==L){cout<<"There is no node!"<<endl;}if (NULL==L->next){cout<<"The linklist is empty!"<<endl;}LinkList temp=L->next;//用于指向被删除的节点LinkList p=L;//用于指向被删除节点的上一个节点while (NULL!=temp->next)//检查前N-1个节点{if (num==temp->data){p->next=temp->next;free(temp);cout<<"删除节点成功。"<<endl;return L;}else{p=temp;temp=temp->next;}}//检查尾节点if (num==temp->data&&NULL==temp->next){p->next=NULL;free(temp);cout<<"删除节点成功。"<<endl;return L;}else{cout<<"没有此节点,无法删除!"<<endl;}}


0 0
原创粉丝点击