将一个带头结点的单链表倒置程序(用指针的方法)
#include<stdio.h>
#include<malloc.h>
typedef struct node{
int data;
struct node *next;
} NODE;
/********************链表**********************/
NODE *Create(){
NODE *p,*head;
int x;
head=(NODE *)malloc(sizeof(NODE));
head->next=NULL;
printf("Input data,-1 to End!\n");
scanf("%d",&x);
while(x!=-1){
p=(NODE *)malloc(sizeof(NODE));
p->data=x;
p->next=head->next;
head->next=p;
scanf("%d",&x);
}
return(head);
}
/******************************************/
void Output(NODE *head){
NODE *p;
p=head;
printf("Begin to dump the LinkList...\n");
while(p->next!=NULL){
printf("->%d",p->next->data);
p=p->next;
}
printf("\nThe LinkList ended!\n");
}
/*******************倒置函数***********************/
void ds(NODE *head){
NODE *p;
p=head;
printf("Begin to ds the LinkList...\n");
p=p->next;
while(p->next!=NULL){
head=p->next;
p->next=p->next->next;
p->next->next=p;
if(p->next!=NULL)
p=p->next;
}
printf("\nThe dsList ended!\n");
}
/******************************************/
void main(){
NODE *head;
head=Create();
Output(head);
ds(head);
Output(head);
}
以上是用指针的方法将一个带头结点的单链表倒置的程序,
但运行时得不到想要的结果,我认为是倒置函数有问题,
但不会改,请哪位高手帮忙更改一下,谢谢!!
#include<malloc.h>
typedef struct node{
int data;
struct node *next;
} NODE;
/********************链表**********************/
NODE *Create(){
NODE *p,*head;
int x;
head=(NODE *)malloc(sizeof(NODE));
head->next=NULL;
printf("Input data,-1 to End!\n");
scanf("%d",&x);
while(x!=-1){
p=(NODE *)malloc(sizeof(NODE));
p->data=x;
p->next=head->next;
head->next=p;
scanf("%d",&x);
}
return(head);
}
/******************************************/
void Output(NODE *head){
NODE *p;
p=head;
printf("Begin to dump the LinkList...\n");
while(p->next!=NULL){
printf("->%d",p->next->data);
p=p->next;
}
printf("\nThe LinkList ended!\n");
}
/*******************倒置函数***********************/
void ds(NODE *head){
NODE *p;
p=head;
printf("Begin to ds the LinkList...\n");
p=p->next;
while(p->next!=NULL){
head=p->next;
p->next=p->next->next;
p->next->next=p;
if(p->next!=NULL)
p=p->next;
}
printf("\nThe dsList ended!\n");
}
/******************************************/
void main(){
NODE *head;
head=Create();
Output(head);
ds(head);
Output(head);
}
以上是用指针的方法将一个带头结点的单链表倒置的程序,
但运行时得不到想要的结果,我认为是倒置函数有问题,
但不会改,请哪位高手帮忙更改一下,谢谢!!
...全文
相关推荐
ConsoleApplication3_suggesttmd_C++_
不带头结点的单链表倒置的算法与实现 数据结构部分
实现不带头节点单链表倒置算法
在数据结构的世界里,单链表作为最基本的线性数据结构之一,它允许存储动态数量的元素,并提供了高效的元素插入和删除操作。单链表由一系列节点组成,每个节点包含两部分:数据域和指针域。数据域用于存储实际的数据,而指针域则存储了指向链表中下一个节点的引用。不同于数组,单链表不支持随机访问,但其灵活性在于可以方便地在任意位置插入或删除节点。单链表的头指针指向链表的第一个节点,而尾指针(如果存在)则指向链表的最后一个节点。这种结构使得从头节点遍历到尾节点成为可能。
给定一个不带头结点的单链表,写出将链表倒置的算法
给定一个不带头结点的单链表,写出将链表倒置的算法
借助栈将一个带头结点的单链表倒置
写一个算法,借助栈将一个带头结点的单链表倒置。类c算法
利用带头结点的单链表实现两个集合的并、交、差运算.docx
利用带头结点的单链表实现两个集合的并、交、差运算 1.题目重述 2.题目功能描述 3. 概要设计图 4. 程序源代码及注释 5. 流程图 6. 截图与数据分析 7.所采用的存储结构的优缺点及采用理由 8.实验心得体会


