一、结构体
typedef struct student {
int number;
struct student *next;
}Student;
包含一个数据,一个指针。指针指向下一个节点。
使用typedef初始化结构体,就是用起来方便,定义的时候不用struct studen a这种写法,直接用Stueden a这种写法就行。图个方便。
二、初始化
Student * linkInit(int n) {
Student *head, *node, *end;
head = (Student *)malloc(sizeof(Student));
end = head;
for (int i = 0; i < n; i++) {
node = (Student *)malloc(sizeof(Student));
node->number = (i+1) * 100;
end->next = node;
end = node;
}
end->next = NULL;
return head;
}
void logLink(Student *link) {
printf(" \n");
Student *node = link->next;
while (node != NULL) {
printf("node.number = %d\n", node->number);
node = node->next;
}
}
void deleteNode(Student *link, int n) {
int index = 0;
Student *node = link;
Student *preNode = link;
while (node != NULL && index < n) {
preNode = node;
node = node->next;
index ++;
}
if (node != NULL) {
preNode->next = node->next;
free(node);
}else{
printf("node不存在\n");
}
}
void updateNode(Student *link, int n, int nuwNum) {
int index = 0;
Student *node = link;
while (node != NULL && index < n) {
node = node->next;
index ++;
}
if (node != NULL) {
node->number = nuwNum;
}else {
printf("node不存在\n");
}
}
void insertNode(Student *link, int n, int newNum) {
int index = 0;
Student *node = link;
Student *preNode = link;
while (node != NULL && index < n) {
preNode = node;
node = node->next;
index ++;
}
if (node != NULL) {
Student *newNode = (Student *)malloc(sizeof(Student));
newNode->number = newNum;
preNode->next = newNode;
newNode->next = node;
}else {
printf("node不存在\n");
}
}
void reverseList(Student *link) {
Student *preNode = link->next;
Student *curNode = preNode->next;
while (curNode != NULL) {
preNode->next = curNode->next;
curNode->next = link->next;
link->next = curNode;
curNode = preNode->next;
}
}
void reverseList2 (Student *link) {
Student *newLink = linkInit(0);
Student *curNode = link->next;
Student *nextNode = curNode->next;
while (curNode != NULL) {
nextNode = curNode->next;
curNode->next = newLink->next;
newLink->next = curNode;
curNode = nextNode;
}
*link = *newLink;
}
三、运行
int main(int argc, const char * argv[]) {
// insert code here...
printf("Hello, World!\n");
Student *link = linkInit(8);
logLink(link);
// deleteNode(link, 1);
// logLink(link);
//
// updateNode(link, 4, 444);
// logLink(link);
//
// insertNode(link, 1, 1111);
// logLink(link);
// reverseList2(link);
// logLink(link);
return 0;
}
网友评论