1.3 단일 체인 표 의 디자인 과 실현

4306 단어 데이터 구조
단일 체인 테이블 의 기본 동작 을 실현 합 니 다. 체인 테이블 의 구축 과 방출, 찾기, 길이 구하 기, 후계 찾기, 삽입, 삭제, 출력 등 함 수 를 포함 합 니 다.
//    :DevC++

//        

#include 
#include 
#define NULL 0

typedef int ElemType;//           

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

/****---------------------------------------------------****/
//         (            )
//   :CreateOne(int n)
//  :  (  )int n,         
//  :          
//   : LNode*        ,          
/****--------------------------------------------------****/

LNode* CreateOne(int n)
{
	int i;
	LNode *head;//       
	LNode *p;//       

	//           
	head = (LNode*)malloc(sizeof(LNode));
	head->next = NULL;

	printf("Pleade input the data for LinkList Nodes:
"); for(i = n; i > 0; i--) { p = (LNode*)malloc(sizeof(LNode));// , scanf("%d",&p->data); // // p->next = head->next; head->next = p; } return head;// , } /****---------------------------------------------------------****/ // ( ) // : CreateTwo(LNode*head, int n) // : ( )LNode*head // ( )int n, // : // : /****--------------------------------------------------------****/ void Createtwo(LinkList &head, int n) { int i; LNode *p;// // head = (LinkList)malloc(sizeof(LNode)); head->next = NULL; printf("Pleade input the data for LinkList Nodes:
"); for(i = n; i > 0; i--) { p = (LNode*)malloc(sizeof(LNode));// , scanf("%d", &p->data);// // p->next = head->next; head->next = p; } } /****--------------------------------------------------****/ // :InsertLNode(LNode *L, int i, ElemType e) // : ( )LNode*L, L // ( )int i // ( )ElemType e // : // : int , 1 ,0 /****-------------------------------------------------****/ int InsertNode(LNode *L, int i, int e) { LNode *p = L;// int j = 0; // , p i while(p&&j < i-1) { p = p->next; ++j; } // if(!p||j > i-1) { printf("Error!The location os illegal!"); return 0; } LNode *s; s = (LNode*)malloc(sizeof(LNode));// s->data = e;// // s->next = p->next; p->next = s; return 1; } /****------------------------------------------------****/ // :DeleteNode(LinkList &L, int i, int &e) // : ( )LinkList &L, L // ( )int i // ( )ElemType &e // : // :ElemType /****-----------------------------------------------****/ ElemType DeleteNode(LinkList &L, int i, int &e) { LNode *p; p = L; // i LNode*q; // int j = 0; // , p i while(p->next && j < i-1) { p = p->next; ++j; } // if(!p||j>i-1) { printf("element is not exist!"); return 0; } q = q->next; p->next = q->next;// i e = q->data; free(q); return(e);// } /****------------------------------------------------------------------*****/ // :DisplayList(LinkList &L, int i, ElemType &e) // : ( )LinkList &L, L // ( )int i // ( )ElemType &e // : // : /****------------------------------------------------------------------****/ void DisplayList(LinkList &L) { LNode *p; p = L->next; while(p!= NULL) { printf("%d ",p->data); p = p->next; } printf("
"); } //******************* *****************************// int main() { LNode *L1; int NodeNum; printf("Please input the Init LinkNode Number:
"); scanf("%d",&NodeNum); L1 = CreateOne(NodeNum); //LNode*L2; //CreateTwo(L2,NodeNum);// L2 // printf("the current L1 is:"); DisplayList(L1); // int result;// , result result = InsertNode(L1,2,88); if(result) { printf("success to insert!
"); } // printf("the current L1 is"); DisplayList(L1); return 0; }

좋은 웹페이지 즐겨찾기