#include<iostream>
#include<stdlib.h>
#include<string>
#include<list>
typedef int ElemType;
using namespace std;
typedef struct LNode{ //单链表结点类型
ElemType data; //数据域
struct LNode *next;//指针域
}LNode,*LinkList;
LinkList GreatL2(LinkList &L){
int i;
LNode *p,*q;
L=(LNode*)malloc(sizeof(LNode));
p=L;
cin>>i;
while(i!=9999){
q=(LNode*)malloc(sizeof(LNode));
q->data=i;
p->next=q;
p=q;
cin>>i;
}
return L;
}
//链表查找:按序号
LinkList Get(LinkList L,int i){
int j=1;
LNode *p=L->next;
if(i==0){
return L;
}
if(i<1){
return NULL;
}
while(p&&j<i){
p=p->next;
j++;
}
return p;
}
//在第i个位置插入数据
bool ListInt(LinkList L,int i,ElemType e){
LinkList p=Get(L,i-1);
if(p==NULL){
return false;
}
LinkList s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return true;
}
//打印链表
int PrintList(LinkList L){//不加引用改变不了L的值
L=L->next;
while(L!=NULL){
cout<<L->data<<"\t";
L=L->next;
}
return 0;
}
int main(){
LinkList L;
GreatL2(L);
ListInt(L,3,20);
PrintList(L);
}
结果如下所示