데이터 구 조 를 연구 하고 C+링크 부분 을 잘 알 고 있 습 니 다.

13392 단어 자료.
2015 년 부터 데이터 구조 연구 에서 자바 기술 알고리즘 으로 문 제 를 프로 그래 밍 할 수 없어 서 C 를 다시 익 힐 수 밖 에 없 었 고 C++를 배 울 수 밖 에 없 었 습 니 다.본질 적 인 문법 은 차이 가 없 지만 링크 의 각종 지침 이 익숙 하지 않 아서 몇 줄 을 써 서 컴 파일 하 는 상황 이 발생 했 습 니 다.하루 동안 대체적으로 자신 이 C++를 쓸 수 있 는 단일 링크 의 추가 삭제 와 역 치 를 배 웠 기 때문에 다 중 링크 는 문제 가 되 지 않 습 니 다.
#include "bits/stdc++.h"

using namespace std;
const int N = 10;

typedef struct LNode
{
	int data;
	struct LNode *next;
}LNode;

void createList(LNode *head, int a[N])
{
	LNode *p = head;
	for (int i = 0; i < N; i++)
	{
		LNode *newnode = new LNode;
		newnode->data = a[i];
		p->next = newnode;
		p = p->next;
	}
}

void printList(LNode *head)
{
	LNode *p = head->next;
	while (p != NULL)
	{
		cout << p->data << " ";
		p = p->next;
	}
	cout << endl;
}

void reverseList(LNode *head)
{
	LNode *p, *r;
	p = head->next;
	head->next = NULL;
	while (p != NULL)
	{
		r = p->next;
		p->next = head->next;
		head->next = p;
		p = r;
	}
}

void deleteKNumber(LNode *head)
{
	cout << "Which u want to delete" << endl;
	int k;
	cin >> k;
	int count = 0;
	LNode *p = head;
	LNode *q = p;
	while (p != NULL)
	{
		count++;
		p = p->next;
		if (count == k)
		{
			q->next = p->next;
			delete p;
			return;
		}
		q = q->next;
	}
}

void destroy(LNode *head)
{
	LNode *p = head, *r;
	while (p != NULL)
	{
		r = p->next;
		delete p;
		p = r;
	}
}

int main()
{
	ios::sync_with_stdio(0);
	int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
	LNode *head = new LNode;
	createList(head, a);
	printList(head);
	
	deleteKNumber(head);
	printList(head);
	
	puts("reverse:");
	reverseList(head);
	printList(head);
	
	destroy(head);
	printList(head);
	return 0;
}

요 며칠 동안 데이터 구 조 를 복습 했다.내 가 보기에 그것 은 주로 시간의 복잡 도 를 중시 하 는 것 같다.문제 의 난이 도 는 모두 어렵 지 않다.모두 데이터 구조 자체 의 문제 이 고 실제 상황 을 가리 지 않 았 다.나 는 또 상당 수의 학생 들 이 직접 코드 를 외 웠 다 고 들 었 다.)408 데이터 구 조 를 쟁취 하면 만점 을 받 을 수 있다.

좋은 웹페이지 즐겨찾기