您的位置:首页 > 其它

单项链表--尾插法

2013-09-13 00:32 155 查看
今天学了尾插法单项链表,写了一下代码,还不够成熟,需要改进,下面是代码,这个模版不是很好,个人感觉,虽然是书上的,但感觉实际意义不大,不过还是熟悉一下课本吧:

下面是我写的代码,尾插法建立单链表“:

//为节点单链表的相关操作
//初始化
#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;
else
return 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: