일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 하이퍼레저패브릭
- html charset
- html youtube
- #3차원배열
- 토큰경제
- #android activity
- html multimedia
- html code
- #자바상속#자바이즈어#is~a
- git flow
- html5 new tag
- html object
- hyperledger transaction
- #JAVASCRIPT
- html id
- relative path
- #CallByAddress
- #C++ has~a
- border-box
- docker example
- #binary
- #2차원배열
- #성적관리프로그램
- #C++ 연산자함수오버로딩
- #1차원배열
- #다차원포인터
- mac terminal command
- html video
- #bubbleSort
- html plug-in
- Today
- Total
A sentimental robot
Single LinkedList Exercise 본문
#include <stdio.h>
struct stu {
int num;
struct stu*next;
}; // 자기참조 구조체
void main()
{
struct stu*head; // 첫번째 노드를 가르키는 포인터
struct stu*cur; // 잡일(검색,출력 ect..)
struct stu*del; // 정적메모리로 할당 시 사용하지 않음
struct stu*new1; // 정적메모리로 할당 시 사용하지 않음
struct stu aa, bb, cc; // 정적메모리로 할당
aa.num = 1;
bb.num = 2;
cc.num = 3;
// 연결
cur = head = &aa;
cur->next = &bb;
cur->next->next = &cc;
cur->next->next->next = NULL;
cur = head; // cur를 다시 aa위치로
/*
cur = &aa;
head = &aa;
cur->next = &bb;
cur = cur->next; // cur위치 이동
cur->next = &cc;
cur = cur->next;
cur->next = NULL;
cur = head;
*/
while (cur != NULL) {
printf("%d\n", cur->num);
cur = cur->next; // cur 위치 이동
}
}
dynamic binding in LinkedList
#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)
struct A {
int num;
struct A*next;
};
void main() {
int o, i;
struct A*head = NULL;
struct A*cur = NULL;
struct A*del = NULL;
struct A*new1 = NULL;
head = cur = new1 = (struct A*)malloc(sizeof(struct A));
new1->num = 1;
new1->next = NULL;
new1 = (struct A*)malloc(sizeof(struct A));
new1->num = 2;
new1->next = NULL;
cur->next = new1;
new1 = (struct A*)malloc(sizeof(struct A));
new1->num = 3;
new1->next = NULL;
cur->next->next = new1;
cur = head;
while (cur != NULL) {
printf("%d", cur->num);
cur = cur->next;
}
//삽입
new1 = (struct A*)malloc(sizeof(struct A));
new1->num = 4;
new1->next = NULL;
printf("몇번째에 삽입할까요?");
scanf("%d", &o);
cur = head;
if (o == 1) { // 노드 검색
new1->next = head;
head = new1;
}
else {
cur = head;
for (i = 0 ; i < o - 2 ; i++) { // cur의 위치
cur = cur->next; / / 다음 노드로 이동시키기
/*
while(c-2>0){
cur=cur->next;
c--;
}
*/
}
new1->next = cur->next; // 뒷부분연결
cur->next = new1; //앞부분 연결
}
cur = head;
while (cur != NULL) {
printf("%d", cur->num);
cur = cur->next;
}
//삭제
printf("몇번을 삭제할까요?");
scanf("%d", &o);
cur = head;
if (o == 1) { // 삭제노드 검색
del = head; // 삭제노드 연결
head = head->next; // 연결
del->next = NULL; //끊기
free(del); //del이 가르키고 있는 동적메모리 해제
}
else {
cur = head;
for (i = 0 ; i < o - 2 ; i++)
{
cur = cur->next;
}
del = cur->next; // 삭제노드연결
cur->next = del->next; // 연결
del->next = NULL; //끊기
free(del);
}
cur = head;
while (cur != NULL) {
printf("%d", cur->num);
cur = cur->next;
}
//전체 삭제
cur = head;
while (cur != NULL) {
del = cur;
cur = cur->next;
del->next = NULL;
free(del);
}
if (cur == NULL)puts("all delete");
}
'Data Structure' 카테고리의 다른 글
Linear Queue (0) | 2018.01.03 |
---|---|
Babygin (0) | 2018.01.03 |
Baseball Game(computer vs user) (0) | 2018.01.03 |
Single LinkedList Exercise2 (0) | 2018.01.03 |
LinkedList (0) | 2018.01.03 |