데이터 구조 [실험 3 링크 기본 조작]

37515 단어 데이터 구조
실험  링크 기본 조작
실험 목적
1.  단일 체인 시트 의 노드 형식 을 정의 합 니 다.
2.  단일 체인 시트 에 대한 기본 적 인 조작 과 구체 적 인 함수 정 의 를 숙지 하 다.
3.  단일 체인 표 의 정 의 를 통 해 선형 표 의 체인 식 저장 구조의 특징 을 파악 한다.
4.  순환 링크 와 더 블 링크 의 정의 와 구조 방법 을 파악 하 다.
실험 내용
이 프로그램의 기능 은 단일 체인 시트 의 정의 와 조작 을 실현 하 는 것 이다.이 프로그램 은 단일 체인 시트 구조 유형 과 단일 체인 시트 작업 에 대한 구체 적 인 함수 정의 와 주 함 수 를 포함한다.프로그램의 단일 체인 테이블 (선두 결점) 결점 은 구조 유형 이 고 결점 값 은 정형 이다.
/* DataType 을 int 형식 으로 정의 합 니 다. */
typedef int DataType;
 
/* 싱글 체인 시트 의 결산 점 유형 */
typedef struct LNode
{DataType data;
     struct LNode *next;
}LNode,*LinkedList;
 
/* 단일 체인 테이블 초기 화 */
LinkedList LinkedListInit()
 
/* 단일 체인 테이블 비우 기 */
void LinkedListClear(LinkedList L)
 
/* 단일 체인 시트 가 비어 있 는 지 확인 합 니 다. */
int LinkedListEmpty(LinkedList L)
 
/* 싱글 체인 시트 옮 겨 다 니 기 */
void LinkedListTraverse(LinkedList L)
 
/* 단일 체인 시트 의 길 이 를 구하 다. */
int  LinkedListLength(LinkedList L)
 
/* 단일 체인 시트 에서 요 소 를 찾 습 니 다. */
LinkedList  LinkedListGet(LinkedList L,int  i)
 
/* 단일 체인 시트 에서 주어진 요소 값 과 같은 요소 가 링크 에 있 는 위 치 를 찾 습 니 다. */
LinkedList  LinkedListLocate(LinkedList  L, DataType  x)
 
/* 단일 링크 에 요 소 를 삽입 합 니 다. */
void  LinkedListInsert(LinkedList L,int i,DataType  x)
 
/* 단일 링크 에서 요 소 를 삭제 합 니 다. */
void LinkedListDel(LinkedList  L,DataType x)
 
/* 꼬리 삽입 법 으로 단일 체인 표를 만들다. */
LinkedList  LinkedListCreat( )
 
 
 1 #include <stdio.h>

 2 #include <malloc.h>

 3 #include <stdlib.h>

 4 

 5 /*   DataType int   */

 6 typedef int DataType;  7  

 8 /*          */

 9 typedef struct LNode{  10  DataType data;  11     struct LNode *next;  12 }LNode,*LinkedList;  13  

 14 /* 1.        */

 15 LinkedList LinkedListInit()  16 {  17     LinkedList head = (LNode*)malloc(sizeof(LNode));  18     head->next = NULL;  19     return head;  20 }  21  

 22 /* 2.       */

 23 void LinkedListClear(LinkedList L)  24 {  25     //L    

 26     while(L->next!=NULL){    //

 27  LinkedList t;  28         t = L->next;  29         L->next = t->next;  30  free(t);  31  }  32     return ;  33 }  34  

 35 /* 3.           */

 36 int LinkedListEmpty(LinkedList L)  37 {  38     if(L->next==NULL)    //               ,      。     。

 39         return 1;  40     else 

 41         return 0;  42 }  43  

 44 /* 4.       */

 45 void LinkedListTraverse(LinkedList L)  46 {  47     LinkedList p = L->next;  48     while(p){  49         printf("%d ",p->data);    //      

 50         p = p->next;  51  }  52     printf("
"); 53 return ; 54 } 55 56 /* 5. */ 57 int LinkedListLength(LinkedList L) 58 { 59 LinkedList p = L->next; 60 int len=0; 61 while(p){ 62 len++; // +1 63 p = p->next; 64 } 65 return len; 66 } 67 68 /* 6. */ 69 LinkedList LinkedListGet(LinkedList L,int i) 70 { 71 int j=1; 72 LinkedList p = L->next; 73 while(p){ 74 if(j==i) 75 return p; 76 p = p->next; 77 j++; // +1 78 } 79 return NULL; 80 } 81 82 /* 7. */ 83 int LinkedListLocate(LinkedList L, DataType x) 84 { 85 int i=1; 86 LinkedList p = L->next; 87 while(p){ 88 if(p->data==x) 89 return i; 90 p = p->next; 91 i++; 92 } 93 return 0; 94 } 95 96 /* 8. */ 97 void LinkedListInsert(LinkedList L,int i,DataType x) 98 { 99 int j=1; 100 LinkedList p = L->next; 101 while(p && j!=i-1){ // i 102 p = p->next; 103 j++; // +1 104 } 105 // 106 if(j==i-1){ 107 LinkedList q = (LinkedList)malloc(sizeof(LNode)); 108 q->data = x; 109 q->next = p->next; 110 p->next = q; 111 } 112 return ; 113 } 114 115 /* 9. */ 116 void LinkedListDel(LinkedList L,DataType x) 117 { 118 LinkedList p = L->next; 119 while(p->next->data!=x){ // x 120 p = p->next; 121 } 122 // 123 if(p->next->data==x){ 124 LinkedList q = p->next; 125 p->next = q->next; 126 free(q); 127 } 128 return ; 129 } 130 131 /* 10. */ 132 LinkedList LinkedListCreat( LinkedList L,DataType a[],int n ) // a 133 { 134 LinkedList p = L; 135 int i; 136 for(i=1;i<=n;i++){ 137 LinkedList q = (LinkedList)malloc(sizeof(LNode)); 138 q->data = a[i]; 139 q->next = NULL; 140 p->next = q; 141 p = q; 142 } 143 return L; 144 } 145 146 int Menu() 147 { 148 int in; 149 printf("[0]
"); 150 printf("[1]
"); 151 printf("[2]
"); 152 printf("[3]
"); 153 printf("[4]
"); 154 printf("[5]
"); 155 printf("[6]
"); 156 printf("[7]
"); 157 printf("[8]
"); 158 printf("[9]
"); 159 printf("[10]
"); 160 scanf("%d",&in); 161 return in; 162 } 163 LinkedList Reply(LinkedList head,int in) 164 { 165 int i,n; 166 switch(in){ 167 case 0: // 168 head = LinkedListInit(); 169 printf(" !
"); 170 break; 171 172 case 1: // 173 int a[1001]; 174 printf(" ?:( 1000 )
"); 175 scanf("%d",&n); // 176 printf(" :
"); 177 for(i=1;i<=n;i++) 178 scanf("%d",&a[i]); 179 head = LinkedListCreat(head,a,n); 180 printf(" !
"); 181 break; 182 183 case 2: // 184 if(LinkedListEmpty(head)) 185 printf("
"); 186 else 187 printf("
"); 188 break; 189 190 case 3: // 191 LinkedListTraverse(head); 192 break; 193 194 case 4: // 195 printf(" :%d
",LinkedListLength(head)); 196 break; 197 198 case 5: // 199 printf("
"); 200 scanf("%d",&n); 201 LinkedList p; 202 p = LinkedListGet(head,n); 203 printf(" %d :%d
",n,p->data); 204 break; 205 206 case 6: // 207 printf("
"); 208 scanf("%d",&n); 209 printf(" %d
",LinkedListLocate(head,n)); 210 break; 211 212 case 7: // 213 printf("
"); 214 scanf("%d",&i); 215 printf("
"); 216 scanf("%d",&n); 217 LinkedListInsert(head,i,n); 218 printf(" !
"); 219 printf(" :
"); 220 LinkedListTraverse(head); 221 break; 222 223 case 8: // 224 printf("
"); 225 scanf("%d",&n); 226 LinkedListDel(head,n); 227 printf(" !
"); 228 printf(" :
"); 229 LinkedListTraverse(head); 230 break; 231 232 case 9: // 233 LinkedListClear(head); 234 printf(" !
"); 235 break; 236 237 default: 238 printf("Bye~
"); 239 exit(1); 240 } 241 return head; 242 } 243 int main() 244 { 245 int in; // 246 LinkedList head; 247 while(1){ 248 in = Menu(); 249 head = Reply(head,in); // 250 printf("
"); 251 system("pause"); 252 system("cls"); 253 } 254 return 0; 255 }

 
Freecode : www.cnblogs.com/yym2013

좋은 웹페이지 즐겨찾기