#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct LinkedListNode_ {
int value;
struct LinkedListNode_* next;
}Node;
typedef struct LinkedListHeader_ {
int count;
Node head;
}LinkedListHeader;
LinkedListHeader* init() {
LinkedListHeader* linkedList = (LinkedListHeader*)malloc(sizeof(LinkedListHeader));
linkedList->count = 0;
linkedList->head.next = NULL;
return linkedList;
}
void add(LinkedListHeader* list, int value) {
Node* node = &(list->head);
Node* newNode = (Node*)malloc(sizeof(Node));
int i;
for (i = 0; ; i++) {
if (node->next == NULL) break;
node = node->next;
}
node->next = newNode;
newNode->value = value;
newNode->next = NULL;
list->count++;
}
void addAt(LinkedListHeader* list, int value, int pos) {
Node* node = &(list->head);
Node* prev = NULL;
Node* newNode = (Node*)malloc(sizeof(Node));
int i;
for (i = 0; i <= pos; i++) {
if (node->next == NULL) return;
prev = node;
node = node->next;
}
newNode->value = value;
newNode->next = node;
prev->next = newNode;
list->count++;
}
void removeNode(LinkedListHeader* list, int pos) {
Node* node = &(list->head);
Node* before = node;
int i;
for (i = 0; i <= pos; i++) {
if (node == NULL) return;
before = node;
node = node->next;
}
before->next = node->next;
free(node);
list->count--;
}
int getLength(LinkedListHeader* list) {
return list->count;
}
int getNodeValue(LinkedListHeader* list, int pos) {
Node* node = &(list->head);
int i;
for (i = 0; i<=pos; i++) {
if (node == NULL) return -1;
node = node->next;
}
return node->value;
}
void main() {
LinkedListHeader* linkedList = init();
add(linkedList, 100);
add(linkedList, 200);
add(linkedList, 300);
add(linkedList, 400);
add(linkedList, 500);
addAt(linkedList, 30, 2);
removeNode(linkedList, 1);
printf("%d \n", getLength(linkedList));
int i;
for(i=0; i<getLength(linkedList); i++)
printf("%d \n", getNodeValue(linkedList, i));
}
포인터도 제대로 모르는 개좁밥인데 1시간동안 만듬
코드 이쁘게 포장해주는 사이트 뭐였는지 아는사람 알려주심 ㄳ
http://colorscripter.com/