// 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");
}