선형 표 의 기본 조작 및 응용 (단일 체인 표 의 생 성, 삽입, 삭제, 찾기, 표시)

22344 단어 데이터 구조
1. 단일 체인 시트 의 생 성 을 실현 합 니 다.2. 단일 체인 표 의 삽입 을 실현 한다.3. 단일 체인 시트 의 삭 제 를 실현 한다.4. 단일 체인 표 찾기 실현;5。단일 체인 시트 의 표시 실현
#include 
#include 

#define OK 1
#define ERROR 0

typedef int Status;
typedef float ElemType;

//           
typedef struct LNode{
 ElemType data;
 struct LNode *next;
}LNode,*LinkList;

//      
Status CreatList_L(LinkList &L,int n)
{//    n     
   LNode *p;
   int i;
   L=(LinkList) malloc(sizeof(LNode));
   L->next=NULL;
   for(i=n;i>0;--i)
   {
    p=(LinkList)malloc(sizeof(LNode));
    scanf("%f",&p->data);
    p->next =L->next;
    L->next=p;
 } 
 } 

//      
Status ListInsert_L(LinkList &L,int i,ElemType e)
{
 LNode *p,*s;
 int j;
 p=L;
 j=0;
 while(p&&j<i-1)
 {
  p=p->next;
  ++j;
 }
 if(!p||j<i-1)
 return ERROR;
 s=(LinkList)malloc(sizeof(LNode));
 s->data =e;
 s->next=p->next;
 p->next=s;
 return OK;
 } 

//      
Status ListDelet_L(LinkList &L,int i,ElemType &e)
{
   LNode *p,*q;
   int j;
   p=L;
  j=0;
  while (p->next&&j<i-1)
  {
   p=p->next;
   ++j;
   } 
 if(!p||j>i-1)
 return ERROR;
 q=p->next;
 p->next=q->next;
 e=q->data;
 free(q);
 return OK;
 }

//      
Status GetElem_L(LinkList L,int i,ElemType &e)
 {
  LNode *p;
  int j;
  p=L;
  j=0;
  while(p&&j<i)
  {
   p=p->next;
   ++j;
  }
  if(!p||j>i)
  return ERROR;
  e=p->data ;
  return OK;
  } 

//      
void ListPrint_L(LinkList L,int n)
{
 LNode *p;
 int i;
 p=L->next;
 for(i=0;i<=n;i++)
 {
  printf("%f ",p->data);
  p=p->next;
 }
 } 

//       
void ListPrint_L(LinkList L)
{
 LinkList p;
 p=L->next;
 while(p!=NULL)
 {
  printf("%f ",p->data);
  p=p->next;
 }
 printf("
"
); } main() { LinkList L; Status i,n,flag,k; ElemType e; printf(" :"); scanf("%d",&n); printf(" :
"
); CreatList_L(L,n); printf(" :1.
2.
3.
4.
"
); for(k=0;;k++) { printf("
:"
); scanf("%d",&flag); if(flag==1) { printf("
"
); scanf("%d %f",&i,&e); ListInsert_L(L,i,e); ListPrint_L(L); } if(flag==2) { printf("
"
); scanf("%d",&i); ListDelet_L(L,i,e); printf(" :%f
"
,e); ListPrint_L(L); } if(flag==3) { printf("
"
); scanf("%d",&i); GetElem_L(L,i,e); printf(" :%f
"
,e); } if(flag==4) break; } return OK; }

좋은 웹페이지 즐겨찾기