중화사전망 - 중국어 사전 - C 언어를 사용하여 빈 순차 선형 테이블에 일련의 데이터 요소를 저장하는 방법은 무엇입니까?
C 언어를 사용하여 빈 순차 선형 테이블에 일련의 데이터 요소를 저장하는 방법은 무엇입니까?
# 포함? & ltstdio.h & gt
# 포함? & ltstdlib.h & gt
/*
1. 구조 만들기-특정 사물의 추상화
2. 연결 목록을 생성합니다
3. 노드를 생성합니다
4. 작업을 삽입합니다
4. 1? 제목 삽입
4.2? 바닥글 삽입
4.3? 지정된 위치에 삽입 (지정된 위치 앞)
5. 작업을 삭제합니다
5. 1? 제목 삭제
5.2? 바닥글 제거
5.3? 위치 삭제 지정
6. null 인지 여부를 결정합니다.
7. 연결 목록을 인쇄합니다
*/
//단일 체인 테이블의 구조
Typedef? Struct? 단일 목록
{
//데이터 필드
Int? 데이터; -응? //이 데이터를 예로 들어 보겠습니다
//struct? MMmyMM
//포인터 필드
Struct? 싱글 리스트? * 다음;
}LIST, * LPLIST
/*
별칭: 대문자화 사용
별칭-별명
//장점: 글자 수가 적고 보기 좋다
Struct? SingleList 는 또 다른 이름인 LIST 입니다
Strcut? 싱글 리스트? * 다른 말로 하자면? Lp 목록
*/
///-& gt;; 2. 연결된 목록을 만듭니다. 모든 구조는 한 가지로 표현해야 합니다.
Lp 목록? 목록 만들기 ()
{
//생성 프로세스는 초기화 프로세스입니다. 기본 데이터 멤버를 초기화하는 프로세스입니다.
//메모리 공간 필요
Lp 목록? 목록? =? (lplist) malloc (sizeof (list));
만약? (목록? = =? Nullptr) 을 참조하십시오
{
Printf ("실패 \ n");
시스템 ("일시 중지");
종료 (0);
}
//헤더를 사용하여 기본 데이터 멤버 연결된 목록을 초기화합니다.
목록-> 다음? =? Nullptr
반환? 목록;
}
///-& gt;; 3. 노드를 생성합니다
Lp 목록? CreateNode(int? 데이터)
{
// 1. 메모리 필요
Lp 목록? 노드? =? (lplist) malloc (sizeof (list));
//2. 기본 데이터 멤버 초기화
노드->; 데이터? =? 데이터; //더 많은 데이터 필드가 있는 연결된 목록을 만듭니다.
노드->; 다음? =? Nullptr
반환? 노드;
}
///-& gt;; 4. 1? 머리 삽입법
//함수 작성: 형식 인수는 작동 중인 것을 나타낼 수 있습니다.
//삽입된 링크 목록은 (List) 이며 삽입된 데이터 (data) 는 몇 개입니까
무효화? Insertlisheadnode(LP list? 목록, List? 데이터)
{
//Insert: 삽입된 노드를 작성합니다.
Lp 목록? 새 노드? =? CreateNode (데이터); //노드 만들기
//삽입 작업
새 노드-> 다음? =? 목록-> 다음으로,
/*
C= 1
B=2
A = c;;
C = b;;
*/
목록-> 다음? =? 뉴노드 (뉴욕 주)
}
///-& gt;; 4.2? 꼬리 삽입법
무효화? Insertlistailnode(LP list? 목록,? Int? 데이터)
{
//바닥글 찾기-> 이동 포인터를 정의합니다.
Lp 목록? TailNode? =? 목록;
언제? (tail node->; 다음? ! =? Nullptr) 을 참조하십시오
{
TailNode? =? Tail node-& gt;; 다음으로,
}
//삽입된 노드 작성
Lp 목록? 새 노드? =? CreateNode (데이터);
Tail node-& gt;; 다음? =? 뉴노드 (뉴욕 주)
}
///-& gt;; 4.3? 장소를 지정하다
무효화? InsertListAppoinNode(LPLIST? 목록,? Int? 데이터,? Int? Pos 데이터)
{
//두 개의 이동 포인터를 작성합니다. 지정된 위치와 지정된 위치 앞을 찾습니다.
Lp 목록? FrontNode? =? 목록;
//frontnode-> Next==taiNode: 인접성을 결정합니다
Lp 목록? TailNode? =? 목록-> 다음으로,
//비어 있는지 여부를 결정합니다.
언제? (tail node->; 데이터? ! =? Pos 데이터)
{
/*
Frontnode = frontnode-> 다음으로,
Tailnode = tailnode-> 다음으로,
*/
FrontNode? =? TailNode
TailNode? =? Front node-& gt;; 다음으로,
만약? (tailNode? = =? Nullptr) 을 참조하십시오
{
Printf ("지정된 위치를 찾을 수 없음 \ n");
시스템 ("일시 중지");
종료 (0);
}
}
//tailnode-> 데이터 = 데이터
//삽입된 노드를 찾은 후 작성합니다.
Lp 목록? 새 노드? =? CreateNode (데이터);
Front node-& gt;; 다음? =? 뉴노드 (뉴욕 주)
새 노드-> 다음? =? TailNode
}
///-& gt;; 5. null 인지 여부를 결정합니다.
//작성 시와 비교
IntIsEmptyList(LPLIST? 목록)
{
만약? (목록-> 다음? = =? Nullptr) 을 참조하십시오
반환? 1; //반환 1, 비어 있음을 나타냅니다.
반환? 0; -응? //는 비어 있지 않음을 나타냅니다.
}
/////-> 데이터를 인쇄합니다
무효화? PrintList(LPLIST? 목록)
{
만약? (IsEmptyList(List))
{
Printf ("연결된 목록이 비어 있어서 인쇄할 수 없습니다.");
시스템 ("일시 중지");
종료 (0);
}
Lp 목록? PNext? =? 목록-> 다음으로,
언제? (pNext? ! =? Nullptr) 을 참조하십시오
{
Printf("%d\t ",p next-& gt;; 데이터);
PNext? =? P next-& gt;; 다음으로,
}
Printf ("\ n");
}
///-& gt;; 7. 삭제
//헤더 삭제
무효화? DeleteListHeadNode(LPLIST? 목록)
{
만약? (IsEmptyList(List))
{
Printf ("연결된 목록이 비어 있어 삭제할 수 없습니다. \ n");
시스템 ("일시 중지");
종료 (0); -응?
}
Lp 목록? 드노드? =? 목록-> 다음으로,
목록-> 다음? =? DNode-& gt;; 다음으로,
무료 (dnode);
드노드? =? Nullptr
}
///-& gt;; 8. 끝을 삭제합니다
무효화? DeleteListTailNode(LPLIST? 목록)
{
만약? (IsEmptyList(List))
{
Printf ("연결된 목록이 비어 있어 삭제할 수 없습니다. \ n");
시스템 ("일시 중지");
종료 (0);
}
//바닥글 찾기-> 이동 포인터를 정의합니다.
Lp 목록? TailNode? =? 목록-> 다음으로,
Lp 목록? 차 꼬리? =? 목록;
언제? (tail node->; 다음? ! =? Nullptr) 을 참조하십시오
{
차 꼬리? =? TailNode
TailNode? =? Tail front->; 다음으로,
}
Tail front->; 다음? =? Nullptr
Free (tail node);
}
///-& gt;; 9. 지정된 위치에서 삭제합니다
무효화? Deletelisappoinnode(LP list? 목록,? Int? Pos 데이터)
{
//두 개의 이동 포인터를 작성합니다. 지정된 위치와 지정된 위치 앞을 찾습니다.
Lp 목록? FrontNode? =? 목록;
//frontnode-> Next==taiNode: 인접성을 결정합니다
Lp 목록? TailNode? =? 목록-> 다음으로,
//비어 있는지 여부를 결정합니다.
언제? (tail node->; 데이터? ! =? Pos 데이터)
{
/*
Frontnode = frontnode-> 다음으로,
Tailnode = tailnode-> 다음으로,
*/
FrontNode? =? TailNode
TailNode? =? Front node-& gt;; 다음으로,
만약? (tailNode? = =? Nullptr) 을 참조하십시오
{
Printf ("지정된 위치를 찾을 수 없음 \ n");
시스템 ("일시 중지");
종료 (0);
}
}
Front node-& gt;; 다음? =? Tail node-& gt;; 다음으로,
Free (tail node);
}
Int? 주 ()
{
Lp 목록? 목록? =? Createlist (); //목록이 성공적으로 만들어졌습니다.
Printf ("insert: \ n");
InsertListHeadNode (목록, 1);
InsertListHeadNode (목록, 2);
InsertListHeadNode (목록, 3);
InsertListTailNode (목록, 0);
PrintList (목록);
Printf ("삭제: \ n");
DeleteListHeadNode (목록);
PrintList (목록);
DeleteListTailNode (목록);
PrintList (목록);
Printf ("위치 지정: \ n");
//모르면 군주에게 물어볼 수 있다.
InsertListAppoinNode (목록, 4,? 2);
InsertListAppoinNode (목록, 3,? 2);
//C/C++? 여덟 번째 그룹
PrintList (목록);
//? 49 1994603
DeleteListAppoinNode (목록, 2);
PrintList (목록);
시스템 ("일시 중지");
반환? 0;
} 빈 순차 선형 테이블에 일련의 데이터 요소를 저장하기 위해 여러 가지 삽입 방법을 사용했지만, 당신에게는 그 중 하나만 있으면 됩니다. 순환삽입만 하면 됩니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 성공명언)