数据结构(二)

原创 2015年11月20日 19:27:44
1.顺序表和链表综合
//在递增有序的顺序表中编程实现A=A-B∩C

typedef  int ElemType;
#include "sqlist.h"//即为数据结构(一)顺序表部分
#include<stdlib.h>
int main()
{
	SqList mylist1,mylist2,mylist3;
	/*��ʼ��˳����L*/
	initlist(mylist1);
	initlist(mylist2);
	initlist(mylist3);
	/*����˳����L*/
	mycreat(mylist1);
	mycreat(mylist2);
	mycreat(mylist3);
	int i = 0, j = 0, k = 0;
	for (i = 0;i < mylist1.length;i++)
	{
		int m = mylist1.elem[i];
		for (j = 0;j < mylist2.length;j++)
		{
			int n = mylist2.elem[j];
			if (m == n)
			{
				for (k = 0;k < mylist3.length;k++)
				{
					int t = mylist3.elem[k];
					if (t == n)
					{
						mylistdelete(mylist1, i);
						i--;
					}
					else
						continue;
				}
			}
			else
				continue;
		}
	}
	output(mylist1);
	system("pause");
	return 0;
}
//////////////////////////////////////////////////////////////////////////////////////
编程实现在有序的单链表结构中删除表中所有值大于mink且小于maxk的元素(mink<=maxk) 

#include<stdio.h>
#include"linklist.h"//即为数据结构(一)的链表部分
#include<stdlib.h>

void main()
{
	Linklist myLinklist,p, t;
	initlist(myLinklist);
	creat(myLinklist);
	p=t = myLinklist;
	myLinklist = t->next;
	int maxk = 10, mink = 1;
	while (myLinklist!= NULL)
	{
		if (myLinklist->data > maxk)
			return;
		if (myLinklist->data <= mink)
		{
			t = myLinklist;
			myLinklist = myLinklist->next;
		}
		else
		{
			t->next = myLinklist->next;
			myLinklist = t->next;
		}
	}
	output(p);
	system("pause");
}

2.栈

应用栈实现判定一个字符串中括号是否匹配(包括()、[ ]、{ })
/*
typedef Bitree SElemType;
typedef struct
{SElemType *base,*top;
 int stacksize;
}Sqstack;

//初始化栈
void Initstack(Sqstack &s)
{   if((s.base=(SElemType *)malloc(100*sizeof(SElemType)))==NULL)
	{    printf(" no size");
             exit(0);
	}
	else {s.top=s.base;
	      s.stacksize=100;
		  }
}

//取出栈顶元素
SElemType Gettop(Sqstack s)
{ SElemType e;
  e=*(s.top-1);
  return e;
}

//删除栈顶元素,并用e返回
Status Pop(Sqstack &s,SElemType &e)
{ if(s.top==s.base)  return ERROR;
  s.top--;
  e=*s.top;
  return OK;
}

//将元素e压入栈中
Status Push(Sqstack &s,SElemType e)
{ if(s.top-s.base==s.stacksize)  return ERROR;
  *s.top=e;
  s.top++;
  return OK;
}

//判断栈是否为空
int Emptystack(Sqstack s)
{if(s.top==s.base)
   return 1;
 else return 0;
}*/

typedef char SElemType;
#include "confere.h"
#include "sqstack.h"//即为上文中/* */内部分
#include<string.h>
#define N 25
Status judge(char ch1, char ch2)
{
	if (ch1 == '['&&ch2 == ']' || ch1 == '(' && ch2 == ')' || ch1 == '{'&&ch2 == '}')
		return OK;
	else
		return FALSE;
}
void mychange2(Sqstack &S, char t)
{
	char c=0;
	if(!Emptystack(S))
	{
		 if (judge(Gettop(S), t))
		 {
			 Pop(S, c);
		 }
		 else
			 Push(S, t);
		return;
	}
	Push(S, t);
}
void main()
{
	Sqstack sq;
	sq.base=(SElemType*)malloc(sizeof(SElemType)*100);
	sq.top=sq.base;
	sq.stacksize=100;
	char buff[N] = { 0 };
	gets(buff);
	int n = strlen(buff);
	for (int i = 0;i <n;i++)
	{
		mychange2(sq, buff[i]);
	}
	char e = 0;
	while (!Emptystack(sq))
	{
		Pop(sq, e);
		putchar(e);
	}
}




注:上述代码作者自己书写,难免会有错误不足之处,欢迎读者指出,大家共同学习大笑




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

数据结构实验4-单链表(二)

  • 2013年12月04日 19:53
  • 19KB
  • 下载

Redis系列----(二)redis中的数据结构类型

一.前言 redis并不是简单的key-value数据容器,不能将其理解为静态存储数据,它是动态交互的数据结构服务器,可以被用作缓存,高性能k-v数据库等。 它支持很多种类型的数据结构,不仅支持str...

数据结构6.4图的存储之二邻接表

  • 2014年11月30日 18:34
  • 433KB
  • 下载

严蔚敏数据结构(最全资料之二)

  • 2009年05月25日 13:19
  • 7.21MB
  • 下载

php面试题之二——数据结构和算法(高级部分)

二、数据结构和算法 1.使对象可以像数组一样进行foreach循环,要求属性必须是私有。(Iterator模式的PHP5实现,写一类实现Iterator接口)(腾讯) class T...
  • s1070
  • s1070
  • 2016年04月17日 19:24
  • 9870

大二数据结构作业--大整数

  • 2017年11月15日 16:50
  • 41.04MB
  • 下载

数据结构实验二-栈的转换

  • 2016年06月21日 20:04
  • 23KB
  • 下载

数据结构 课设二: 唯一地确定一棵二叉树

唯一地确定一棵二叉树 【问题描述】 如果给出了遍历二叉树的前序序列和中序序列,则可以构造出唯 一的一棵二叉树。试编写实现上述功能的程序。 【基本要求】 ...

数据结构实验二线性表子系统

  • 2014年11月04日 16:38
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构(二)
举报原因:
原因补充:

(最多只允许输入30个字)