本文主要是介绍单项链表--尾插法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天学了尾插法单项链表,写了一下代码,还不够成熟,需要改进,下面是代码,这个模版不是很好,个人感觉,虽然是书上的,但感觉实际意义不大,不过还是熟悉一下课本吧:
下面是我写的代码,尾插法建立单链表“:
//为节点单链表的相关操作
//初始化
#include <stdio.h>
#include <stdlib.h>
using namespace std;
typedef int type_int;
typedef struct Node
{type_int x;struct Node *next;
}node,*node_point;
//初始化
void Init(node_point &head,node_point &rear){head=(node_point)malloc(sizeof(node));rear=head;head->next=NULL;
}
//构造链表
void Construct(node_point &rear){type_int c;while(scanf("%d",&c),c){node_point p=(node_point)malloc(sizeof(node));p->x=c;rear->next=p;rear=p;}rear=NULL;
}
//查找index
node_point Search_node(node_point &head,type_int i){
if(i<=0){printf("wrong search");return NULL;
}
int j=1;
node_point temp=head->next;
while(temp!=NULL && j<i){j++;temp=temp->next;
}
if(temp!=NULL)return temp;
elsereturn NULL;
}//查找key
node_point Search_node_two(node_point &head,type_int key){for(node_point temp=head->next;temp;temp=temp->next)if(temp->x==key)return temp;return NULL;
}//插入
void Insert_node(node_point &head,int i,type_int c){if(i==1){node_point p=(node_point)malloc(sizeof(node));p->x=c;p->next=head->next;head->next=p;printf("succeed\n");return;}node_point p=Search_node(head,i-1);if(p==NULL || p->next==NULL){printf("failure\n");return ;}node_point q=(node_point)malloc(sizeof(node));q->x=c;q->next=p->next;p->next=q;printf("succeed\n");
}
//判空
bool Is_empty(node_point &head){return head->next==NULL;
}
//删除
void Delete_node(node_point &head,node_point &rear,int i){if(Is_empty(head)){printf("the node is empty\n");return ;}if(i==1){node_point p=head->next;head->next=p->next;free(p);if(head->next==NULL)rear=head;printf("succeed\n");}node_point p=Search_node(head,i-1);if(p==NULL || p->next==NULL){printf("failure\n");return ;}node_point q=p->next;p->next=q->next;free(q);printf("succeed\n");
}int main()
{return 0;
}
这篇关于单项链表--尾插法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!