데이터 구조 [실험 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.