创建一个单链表,要能运行成功的代码
发布网友
发布时间:2022-05-26 17:27
我来回答
共3个回答
热心网友
时间:2023-10-06 13:43
#include<stdio.h>
#include <stdlib.h>
//定义节点
typedef struct LNode
{
char data;
struct LNode *next;
} LNode,*LinkList;
//定义链表
LinkList CreatList_L(int n)
{
LinkList L;
int i=n;
LinkList p,temp;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
temp=L;
for(i=n; i>0; --i)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%c",&p->data);
p->next=NULL;
temp->next=p;
temp=p;
}
return L;
}
//输出链表
void PrintList_L(LinkList L,int n)
{
int i=0;
LinkList p;
p=L->next;
printf("Element order is:\n");
for(i=n; i>0; --i)
{
printf("%c ",p->data);
p=p->next;
}
}
//链表逆置
LinkList Inversion_L(LinkList L,int n)
{
LinkList curnode=L->next; //当前节点,指向表
LinkList temp=curnode->next; //临时节点
LinkList r;
curnode->next=NULL;
while(temp!=NULL)
{
r=temp->next;
temp->next=curnode;
curnode=temp;
temp=r;
}
L->next=curnode;
return L;
}
int main(void)
{
LinkList L;
LinkList list;
LinkList p;
int n;
int i;
printf("请输入链表节点数:");
scanf("%d",&n);
printf("请输入元素:");
list=CreatList_L(n);
Inversion_L(list,n);
PrintList_L(list,n);
}
热心网友
时间:2023-10-06 13:44
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int num;
node* next;
}node,*link;
void creat(link &head)
{
link p,q;
head=new node[sizeof(node)];
q=head;
int i=1;
do
{
p=new node[sizeof(node)];
printf("请输入第%d个数:",i++); //结束标记为0
scanf("%d",&p->num);
if(p->num!=0)
{
q->next=p;
q=p;
}
}while(p->num!=0);
q->next=NULL;
}
void reserve(link &head)
{
if(head->next ==NULL)
return;
link pre, cur, ne;
pre=head->next;
cur=head->next;
while(cur)
{
ne = cur->next;
cur->next = pre;
pre = cur;
cur = ne;
}
head->next->next = NULL;
head->next = pre;
}
void show(link head)
{
link p=head->next;
while (p)
{
printf("%d ",p->num);
p=p->next;
}
printf("\n");
}
void main()
{
link head=NULL,p;
int i;
creat(head);
show(head);
printf("链表逆序:");
reserve(head);
show(head);
}
热心网友
时间:2023-10-06 13:44
不想写程序了,只要将原来链表中的节点依次获得,然后将每一个结点用前插的方法插入新的链表中即可,比较简单的题目。