#include <stdio.h>
typedef struct Note *PtrtoNote;
struct Note{
int Data;
PtrtoNote Next;
};
typedef PtrtoNote List;
List Reverse(List);
int main(void){
int n,i;
PtrtoNote p;
List L;
List NewL;
printf("How many numbers do you want to input:");
scanf("%d",&n);
L=(PtrtoNote)malloc(sizeof(PtrtoNote));//创建头结点
//p=(PtrtoNote)malloc(sizeof(PtrtoNote));//申请第一个结点
//L=p;//链接头结点和首结点
p=L;//
printf("Please input numbers:\n");
for(i=0;i<n;i++)
{
scanf("%d",&p->Data);
if(i==n-1){
p->Next=NULL;
break;
}
else{
p->Next=(PtrtoNote)malloc(sizeof(PtrtoNote));//申请下一个节点
p=p->Next;
}
}
//L=Reverse(L);//反序
p=L;//由于第一个循环已经将链表移到末尾,所以这里要将链表移到首结点开始打印
while(p!=NULL)
{
printf("%d ",p->Data);
p=p->Next;
}
return 0;
}
List Reverse( List L )
{ /* 将单链表L逆转 */
PtrtoNote Old_head, New_head, Temp;
Old_head = L; /* 初始化当前旧表头为L */
New_head = NULL; /* 初始化逆转后新表头为空 */
while ( Old_head ) { /* 当旧表不为空时 */
Temp = Old_head->Next;
Old_head->Next = New_head;
New_head = Old_head; /* 将当前旧表头逆转为新表头 */
Old_head = Temp; /* 更新旧表头 */
}
L= New_head; /* 更新L */
return L;
}
数据结构——链表的创建、赋值、反序与遍历
最新推荐文章于 2022-09-09 22:12:54 发布