单链表的创建,删除,插入
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");
}
//
#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");
}
相关文章推荐
- C++实现单链表的创建、插入、删除、逆置操作
- 单链表的基本操作(创建、插入、删除......)
- 单链表的创建、插入、删除等操作
- 单链表的创建、插入、删除、倒置操作
- 单链表创建-遍历-排序-插入-删除-逆序操作
- 单链表的创建,删除,插入以及打印。
- 线性表---单链表(创建、插入、删除、排序、测长和打印输出)
- 单链表的创建、测长、打印、插入和删除
- 单链表的创建,插入,删除以及就地逆转
- 单链表的创建,插入删除等操作
- 单链表的创建,删除,插入,显示,排序
- 单链表操作,创建,遍历,插入,删除,排序等操作
- 实现单链表的创建、打印、插入、删除、逆置
- 单链表的创建,查找,删除,插入。
- 数据结构之单链表——带有节点的单链表的创建、插入和删除(C/C++)
- 单链表的创建、计数打印、删除与插入操作
- 单链表详解(创建,插入,删除,打印)
- C++单链表的操作(创建,删除,打印,遍历,插入)
- 单链表的创建,插入,删除以及逆序
- 单链表的创建、取数据、数据添加、数据插入、数据删除