链表创建 和 倒置

#define MAX_ITEM 10
typedef struct node *link;
struct node{
int data;
link next;
};


link Create();
void Destory(link head);
void Print(link head);
link Revert(link head);


Node Create() {
link x = NULL;
link head = (link) malloc(sizeof(struct node));
x = head;


for (int i = 0; i < MAX_ITEM ; i++) {
link newNode = (link)malloc(sizeof(struct node));
newNode->data = i;
newNode->next = NULL;
x->next = newNode;
x = x->next;
}
return head;
}


void Destory(link *head) {

link node = head;

while(node != NULL) {

link tmpNode = node ->next;

free(node);
node = tmpNode;
}
}


void Print(link *head) {
if (head == NULL) 
return;
while(head) {
printf("%d", head->data);
head = head->next;
}
}


link Revert(link head) {
link preNode, curNode, nextNode;
if (head == NULL) //空链表
return NULL;
if (head->next == NULL) //仅一个元素
return head;


preNode = NULL;//初始化
curNode = head;
while(curNode) {
nextNode = curNode->next;//先记录下一个结点
curNode->next = preNode;//改变链表方向(逆置)
preNode = curNode;//将当前结点作为下一次循环的前一个结点
curNode = nextNode;//向后推移一个结点
}
return preNode;//当遍历完链表后curNode应该为空,此时preNode就是逆置后链表头(head)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值