#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct Node{
int data;
struct Node *next;
}Node,*LinkList;
bool InitList(LinkList &L){
L=(Node*)malloc(sizeof(Node));
if(L==NULL) return false;
L->next=NULL;
printf("InitList Successful!\n");
return true;
}
bool ListInsert(LinkList &L,int e){
Node *s,*p=L;
s=(Node*)malloc(sizeof(Node));
if(s==NULL) return false;
while(p->next!=NULL){
p=p->next;
}
s->data=e;
p->next=s;
s->next=NULL;
return true;
}
bool PrintList(LinkList L)
{
Node *p=L->next;
if(p==NULL) return false;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}return true;}
void ListReverse(LinkList &L){
//将链表元素进行逆置
Node *r,*p=L->next;//r指针用来记录下一个需要逆置的节点元素 //p指向当前需要逆置的节点元素
L->next=NULL; //L的next指针指向空,可以保证链表尾部为空,后期插入是在L和L的next之间插入
while(p!=NULL){
r=p->next;//r指向下一个逆置的节点
p->next=L->next;//p的next指向L的next,第一个元素是指向空,后面的元素依次指向上一个元素
L->next=p;//L的next指向p,即当前逆置元素
p=r;//p再指向下一个逆置节点
}
}
int main() {
LinkList L;
InitList(L);
int a[10]={
1,2,3,4,5,6,7,8,9,10},i=0;
while(i<(sizeof(a)/4))
ListInsert(L,a[i++]);
PrintList(L);
ListReverse(L);
printf("\n");
PrintList(L);
return 0;
}
数据结构之链表初始化,插入,逆置,输出
猜你喜欢
转载自blog.csdn.net/qq_44741467/article/details/120942757
今日推荐
周排行