데이터 구조 - c 언어 설명 제2 장 (2) 단 방향 링크
2922 단어 데이터 구조
typedef struct node {
char data;
struct node *next;
}Linklist;
Linklist *createlinklist_head () ;
Linklist *createlinklist_tail () ;
Linklist *get (Linklist *L , int i) ;
int del (Linklist *L , int i , char *e) ;
이것 은 헤더 파일 입 니 다. 주로 단일 링크 의 데이터 구조 와 함수 헤드 를 정 의 했 습 니 다. 여기 서 저 는 디 테 일 에 신경 쓰 지 않 고 단일 링크 의 데이터 부분 을 char 형식 으로 바 꾸 었 습 니 다. 주로 알고리즘 을 실현 합 니 다.)
#include
#include "linklist.h"
#include
Linklist *createlinklist_head () {
Linklist *L , *s;
int flag = 1;
char c;
L = (Linklist *) malloc (sizeof (Linklist));
L->next = NULL;
while (flag) {
c = getchar ();
if (c == '.')
flag = 0;
else {
s = (Linklist *) malloc (sizeof (Linklist));
s->data = c;
s->next = L->next;
L->next = s;
}
}
return L;
}
Linklist *createlinklist_tail () {
Linklist *L , *s , *temp;
int flag = 1;
char c;
L = (Linklist *) malloc (sizeof (Linklist));
L->next = NULL;
temp = L;
while (flag) {
c = getchar ();
if (c == '.')
flag = 0;
else {
s = (Linklist *) malloc (sizeof (Linklist));
s->data = c;
temp->next = s;
s->next = NULL;
temp = s;
}
}
return L;
}
Linklist *get (Linklist *L , int i) {
int j = 0;
Linklist *temp = L;
while (temp->next != NULL && j < i) {
temp = temp->next;
j++;
}
return temp;
}
int del (Linklist *L , int i , char *e) {
int j = 0;
Linklist *temp = L;
Linklist *pre;
if (temp == NULL) {
printf ("arguement L error!
");
return 0;
}
if (i <= j) {
printf ("arguement i error!(too small)
");
return 0;
}
while (1) {
j++;
pre = temp;
temp = temp->next;
if (j == i && temp != NULL) {
*e = temp->data;
pre->next = temp->next;
free (temp);
return 1;
}
else if (temp == NULL) {
printf ("arguement i error!(too big)
");
return 0;
}
}
}
이상 은 단일 링크 의 주요 기본 적 인 조작 인 데 그 중에서 머리 삽입 법 건축 표, 꼬리 삽입 법 건축 표, 취 조작, 삭제 작업 을 포함한다.그 중의 모든 알고리즘 을 나 는 모두 검 사 했 기 때문에 디 버 깅 코드 를 놓 지 않 을 것 이다.
결론: 여기 서 쉽게 범 할 수 있 는 오류 가 있 습 니 다. 하 나 는 성명 의 지침 을 직접 사용 할 수 없 는 것 이 아니 라 이 를 할당 하거나 malloc 를 해 야 한 다 는 것 입 니 다. 저 는 여기 서 반나절 동안 테스트 를 했 는데 마지막 으로 이 자주 범 하 는 문 제 를 발 견 했 습 니 다.또한 헤드 삽입 법 으로 시 계 를 만 들 때 도 헤드 노드 의 처리 에 주의해 야 한다. 이것 도 매우 중요 하 다.이것 이 이번 의 주요 수확 이 겠 지!매일 진보 해 야 한다!곧 기 말 이 니 좀 더 멈 춰 야 할 것 같 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.