#include <stdio.h>
#include <stdlib.h>
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
bool InsertList(LinkList &L){//插入数据
int i,e,c;
printf("是否插入数据\n");
scanf("%d",&c);
while(c!=1&&c!=0){
printf("请重新输入\n");
scanf("%d",&c);
}
if(c==0)return false;
printf("输入插入数据的位置\n");
scanf("%d",&i);
printf("输入插入数据的值\n");
scanf("%d",&e);
if(i<1)return false;
LNode *q;
q=L;
for(int j=0;q!=NULL && j<i-1;j++){
q=q->next;
}
if(q==NULL)return false;
LNode *p=(LNode *)malloc(sizeof(LNode));
p->data=e;
p->next=q->next;
q->next=p;
bool OutPutList(LinkList);
OutPutList(L);
return true;
}
bool DeleteList(LinkList &L){//删除数据
int i,c;
LNode *q;
printf("是否删除数据\n");
scanf("%d",&c);
while(c!=1&&c!=0){
printf("请重新输入\n");
scanf("%d",&c);
}
if(c==0)return false;
printf("输入删除数据的位置\n");
scanf("%d",&i);
if(i<1)return false;
q=L;
for(int j=0;q!=NULL && j<i-1;j++){
q=q->next;
}
if(q==NULL)return false;
if(q->next==NULL)return false;
LNode *p;
p=q->next;
q->next=p->next;
free(p);
bool OutPutList(LinkList);
OutPutList(L);
return true;
}
bool InitList(LinkList &L){//创建单链表
L=(LNode *)malloc(sizeof(LNode));
if(L==NULL)
return false;
L->next=NULL;
return true;
}
bool OutPutList(LinkList L){//输出单链表
LNode *q;
q=L->next;
printf("单链表输出\n");
while(q){
printf("%d ",q->data);
q=q->next;
}
printf("\n");
return true;
}
bool CreateList(LinkList &L){//给单链表赋值
LNode *q,*p;
int n,i;
q=L;
printf("输入单链表长度:\n");
scanf("%d",&n);
printf("输入单链表各个数据项:\n");
for(int j=0;j<n;j++){
p=(LNode *)malloc(sizeof(LNode));
scanf("%d",&i);
p->data=i;
q->next=p;
q=p;
}
q->next=NULL;
return true;
}
LNode * GetElem(LinkList L){//按位查找
int i;
printf("输入你需要查找的位数\n");
scanf("%d",&i);
if(i<0)return NULL;
LNode *q;
q=L;
for(int j=0;j<i;j++){
q=q->next;
}
if(q==NULL)return NULL;
return q;
}
int LocateElem(LinkList L){//按值查找
int temp,i;
i=1;
printf("输入你需要查找的值\n");
scanf("%d",&temp);
LNode *q;
q=L->next;
for(int j=0;q->data!=temp && q!=NULL;j++){
q=q->next;
i++;
}
if(q==NULL)return NULL;
return i;
}
int main(){
LNode *q;
int i;
printf("HelloWorld!\n");
LinkList L;
InitList(L);
CreateList(L);
OutPutList(L);
q=GetElem(L);
printf("查找位数的值为\n");
printf("%d\n",q->data);
i=LocateElem(L);
printf("查找值的位数为\n");
printf("%d\n",i);
return 0;
}