#include <stdio.h>
# include<stdlib.h>
#define stacksize 100
typedef int datatype;
typedef struct
{
datatype data[stacksize];
int top;
}seqstack;
typedef struct node{
datatype data;
struct node *next;
}listnode;
typedef listnode *linklist;
linklist head;
linklist p;
int count;
linklist creatlist(int n)
{
linklist head;
listnode *p1,*p2;
int i;
head=(linklist)malloc(sizeof(listnode));
head->next=NULL;
p2=head;
printf("Please input the records of the chain!n");
for(i=0;i<n;i++)
{
p1=(linklist)malloc(sizeof(listnode));
scanf("%d",&p1->data);
p1->next=p2->next;
p2->next=p1;
p2=p1;
}
return (head);
}
void print(linklist head,int n)
{
if(head==NULL)
printf("list null!n");
printf("Now these %d records are:n",n);
p=head->next;
printf("%4d",p->data);
count=1;
while(p->next!=NULL)
{
count++;
p=p->next;
printf("%4d",p->data);
if(!(count%10))
printf("n");
}
}
datatype push(seqstack *s,int x)
{
if(s->top==stacksize-1)
printf("The stack is overflow!n");
else
s->data[++s->top]=x;
}
datatype pop(seqstack *s)
{
if(s->top==-1)
printf("the stack is empty!n");
else
return (s->data[s->top--]);
}
利用栈来实现单链表的逆序
时间: 2024-09-13 20:27:13
利用栈来实现单链表的逆序的相关文章
link中是不是单链表不能逆序输出?只有双向链表才可以,这么说正确么?
问题描述 link中是不是单链表不能逆序输出?只有双向链表才可以,这么说正确么? link中是不是单链表不能逆序输出?只有双向链表才可以,这么说正确么? 解决方案 也可以啊,再定义一个堆栈,遍历链表,将值放进去,然后再输出堆栈.
java实现单链表之逆序_java
下面一段代码准确的介绍了java实现单链表逆序,具体内容就不做详解了,有需要的朋友可以直接拷贝了 package com.ckw.mianshi; /** * java 实现单链表的逆序 * @author Administrator * */ public class SingleLinkedReverse { class Node{ int data; Node next; public Node(int data){ this.data = data; } } public static
在C++数据结构中,关于单向链表的排序顺序控制,如何让单向链表按照逆序排列?
问题描述 在C++数据结构中,关于单向链表的排序顺序控制,如何让单向链表按照逆序排列? 在C++数据结构中,关于单向链表的排序顺序控制,如何让单向链表按照逆序排列? 解决方案 http://blog.163.com/lixiangqiu_9202/blog/static/53575037201187102524490/ if(p->next->data<q->next->data) -> if(p->next->data>q->next->
数据结构实践——单链表:逆置、连接与递增判断
本文针对数据结构基础系列网络课程(2):线性表的实践项目. [项目 - 单链表算法](程序中利用了已经实现的单链表算法,头文件LinkList.h及其中函数的实现见单链表算法库) 1.设计一个算法,将一个带头结点的数据域依次为a1,a2,-,an(n≥3)的单链表的所有结点逆置,即第一个结点的数据域变为an,-,最后一个结点的数据域为a1.实现这个算法,并完成测试. [参考解答] (程序中利用了已经实现的单链表算法,头文件LinkList.h及其中函数的实现见单链表算法库) #include <
单链表(二):如何实现单链表的排序、逆置(逆序)
1.单链表的排序 示例代码如下: #include<iostream> using namespace std; ///单链表结构体:结点 typedef struct student { int data; //结点中的数据 struct student *next; //指向链表下一个结点的指针 }node; node *head; //头结点指针 int index; //链表长度 ///建立单链表 void *create() { node *p,*s; //增加结点的位置指针.要增加
动态单链表的传统存储方式和10种常见操作-C语言实现
顺序线性表的优点:方便存取(随机的),特点是物理位置和逻辑为主都是连续的(相邻).但是也有不足,比如:前面的插入和删除算法,需要移动大量元素,浪费时间,那么链式线性表 (简称链表) 就能解决这个问题. 一般链表的存储方法 一组物理位置任意的存储单元来存放线性表的数据元素,当然物理位置可以连续,也可以不连续,或者离散的分配到内存中的任意位置上都是可以的.故链表的逻辑顺序和物理顺序不一定一样. 因为,链表的逻辑关系和物理关系没有必然联系,那么表示数据元素之间的逻辑映象就要使用指针,每一个存储
设计鲁棒性的方法:输入一个链表的头结点,逆序遍历打印该链表出来
之前有过整理链表等的概念和基本算法.比较重要的是插入,删除,遍历,建表(尾插法,头插法) 回忆链表尾部插入结点: 1 #include <iostream> 2 using namespace std; 3 4 typedef struct Node{ 5 int data;//数据域 6 Node *next;//指针域 7 } Node, *List; 8 9 //在单链表的末位添加一个结点 10 void addNode(List *head, int value) 11 { 12 //
Python 实现一个全面的单链表
前言 实现清单 链表实现 总结 前言 算法和数据结构是一个亘古不变的话题,作为一个程序员,掌握常用的数据结构实现是非常非常的有必要的. 实现清单 实现链表,本质上和语言是无关的.但是灵活度却和实现它的语言密切相关.今天用Python来实现一下,包含如下操作: ['addNode(self, data)'] ['append(self, value)'] ['prepend(self, value)'] ['insert(self, index, value)'] ['delNode(self,
Java模拟单链表和双端链表数据结构的实例讲解_java
模拟单链表 线性表: 线性表(亦作顺序表)是最基本.最简单.也是最常用的一种数据结构. 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的. 线性表的逻辑结构简单,便于实现和操作. 在实际应用中,线性表都是以栈.队列.字符串等特殊线性表的形式来使用的. 线性结构的基本特征为: 1.集合中必存在唯一的一个"第一元素": 2.集合中必存在唯一的一个 "最后元素" : 3.除最后一个元素之外,均有 唯一的后继(后件):