您的位置:首页 > 其它

单链表的创建,删除,插入

2012-05-15 15:11 309 查看
// Node.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include<iostream>

#include<stdio.h>

#include<stdlib.h>

typedef struct LNode{

int data;

struct LNode *next;

}LNode;

void CreatelistR(LNode *&C,int a[],int n){

LNode *s,*r;

C=(LNode *)malloc(sizeof(LNode));

C->next=NULL;

r=C;

for(int i=0;i<n;i++){

s=(LNode *)malloc(sizeof(LNode));

s->data=a[i];

r->next=s;

r=r->next;

}

r->next=NULL;

}

//查找

void GetElem(LNode *C)

{

int i,j=0;

LNode *p;

printf("输入要查找的位置:\n");

scanf_s("%d",&i);

p=C; //从头结点开始扫描

while(p->next!=NULL && j<i)

{

p=p->next;

j++;

}

if(i==j && i!=0)

printf("%d",p->data);

else

printf("fault");

printf("\n");

}

//删除

void deletelist(LNode *&C){

int a,j=1;

LNode *p,*q;

printf("输入要删除的位置:\n");

scanf_s("%d",&a);

// int i=a-1;

p=C;

if(a==1)

p=p->next;

while(p->next!=NULL&&a!=1&&j<a){

p=p->next;

j++;

}

if(a==j){

q=p->next;

p->next=p->next->next;

free(q);

}

}

//插入

void insertlist(LNode *&C){

LNode *p,*q;

int i,a,j=0;

printf("请输入要插入的位置:\n");

scanf_s("%d",&i);

printf("请输入要插入的数据:\n");

scanf_s("%d",&a);

q=(LNode *)malloc(sizeof(LNode));

q->data=a;

p=C;

int b=i-1;

while(p->next!=NULL&&j<b)

{

p=p->next;

j++;

}

if(b==j){

q->next=p->next;

p->next=q;

}

}

//显示链表

void show(LNode *C)

{

struct LNode *p;

p=C->next;

while(p)

{

printf("%d ",p->data);

p=p->next;

}

printf("\n");

}

void main(){

int n=5;

int a[5];

printf("请输入数组元素:\n");

for(int i=0;i<5;i++){

scanf_s("%d",&a[i]);

}

LNode *C;

CreatelistR(C,a,5);

show (C);

GetElem(C);

deletelist(C);

show (C);

insertlist(C);

show(C);

system("PAUSE");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: