单链表相关的操作 文字的表述力是有限的。理解是首要的,动手操作是必要的。
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
int data;
struct LNode * next;
}LNode,*LinkList;
LinkList List_HeadInsert(LinkList &L){
int x;
LNode * s;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
printf("please input data:");
scanf("%d\n",&x);
while(x!=9999){
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
s->next=L->next;
L->next=s;
scanf("%d",&x);
}
return L;
}
LinkList List_TailInsert(LinkList &L){
int x;
LNode * s,* r;
L=(LinkList)malloc(sizeof(LNode));
r=L;
printf("please input data:");
scanf("%d\n",&x);
while(x!=9999){
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
r->next=NULL;
return L;
}
LNode *GetElem(LinkList L,int i){
int j=1;
LNode *p=L->next;
return NULL;
if(i==0)
return L;
if(i<1)
while(p!=NULL&&j<i){
p=p->next;
j++;
}
return p;
}
LNode *LocateElem(LinkList L,int e){
LNode *p=L->next;
while(p!=NULL&&p->data!=e){
p=p->next;
}
return p;
}
bool ListInsert(LinkList &L,int i,int e){
if(i<1) return false;
LNode *p;
int j=0;
p=L;
while(p!=NULL&&j<i-1){
p=p->next;
j++;
}
if(p==NULL) return false;
LNode *s=(LNode *)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return true;
}
bool InsertPriorNode(LNode *p,int e){
if(p==NULL) return false;
LNode *s=(LNode *)malloc(sizeof(LNode));
if(s==NULL) return false;
int temp=p->data;
p->data=e;
s->data=temp;
s->next=p->next;
p->next=s;
}
bool ListDelete(LinkList &L,int i,int &e){
if(i<1) return false;
LNode *p;
int j=0;
p=L;
while(p!=NULL&&j<i-1){
p=p->next;
j++;
}
if(p==NULL) return false;
if(p->next==NULL) return false;
LNode *q=p->next;
e=q->data;
p->next=q->next;
free(q);
return true;
}
bool DeleteNode(LNode *p){
if(p=NULL) return false;
LNode *q=p->next;
p->data=p->next->data;
p->next=q->next;
free(q);
return true;
}
bool InitList(LinkList &L){
L=NULL;
return true;
}
void printfList(LinkList &L)
{
LNode *ptr= L;
int count = 0;
printf("the linkList data:\n");
while(ptr->next!=NULL)
{
ptr = ptr->next;
printf("%d\t",ptr->data);
count++;
if(count%5==0)
{
printf("\n");
}
}
printf("\n");
}
int main(){
LinkList L;
InitList(L);
List_TailInsert(L);
printfList(L);
return 0;
}
|