| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 988 人关注过本帖
标题:[求助]帮朋友提问..因为我不太明白
只看楼主 加入收藏
cjl206221
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2006-4-4
收藏
 问题点数:0 回复次数:9 
[求助]帮朋友提问..因为我不太明白

1、设计一个算法,实现如下功能:删除一已知顺序表中值相同的元素。已知:顺序表的数据结构如下:
typedef struct

{int data[100];

int last; }SQ;

2、设计算法,将一链栈中的元素依次取出,并打印元素值。已知链栈的数据结构如下:
typedef struct node

{int data;

Struct node *next;

}StackNode,*LinkStack;

3、设计算法,将一循环队中的元素依次取出,并打印元素值。已知,循环队的数据结构如下:
typedef struct

{ int data[100];

int front,rear;

int num;}QNode;

搜索更多相关主题的帖子: face 仿宋 int node 
2006-05-15 19:07
cjl206221
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2006-4-4
收藏
得分:0 

这是一个朋友问我的问题,因为我的数据库结构和算法不好...所以让大家帮一下忙啦.....很好的朋友.谢谢!


程序如衣服,简单,务实就好! Http://www. 我的个人站
2006-05-15 19:08
cjl206221
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2006-4-4
收藏
得分:0 

补充...他说是要求是使用 c或者c++


程序如衣服,简单,务实就好! Http://www. 我的个人站
2006-05-15 19:10
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

删除顺序表中相同的元素

#include <stdio.h>
#include <stdlib.h>
#define LISTSIZE 10
#define INCREMENT 10

typedef struct
{
int *elem;
int length;
int listsize;
}SqList;

static void InitialList(SqList *L);
static void CreateList(SqList *L);
static void DeleteElem(SqList *L);
static void VisitList(SqList L);
static void DestroyList(SqList *L);

int main(void)
{
SqList L;

InitialList(&L); /* 顺序表初始化*/

CreateList(&L); /* 创建顺序表 */

VisitList(L); /* 打印创建后的顺序表 */

DeleteElem(&L); /* 删除顺序表中的相同元素 */

VisitList(L); /* 打印删除后的顺序表 */

DestroyList(&L); /* 销毁顺序表 */

return 0;
}

static void InitialList(SqList *L)
{
if ((((*L).elem = (int*)malloc(sizeof(int) * LISTSIZE))) == NULL)
{
exit(1);
}
(*L).length = 0;
(*L).listsize = LISTSIZE;
}

static void CreateList(SqList *L)
{
int n, i;

printf("Enter elemenet number n: ");
scanf("%d", &n);

for (i = 0; i < n; i++)
{
scanf("%d", &(*L).elem[(*L).length++]);

if ((*L).length >= (*L).listsize)
{
if ((((*L).elem = (int*)realloc((*L).elem, sizeof(int) * ((*L).listsize + INCREMENT)))) == NULL)
{
exit(1);
}
}
}
}

static void DeleteElem(SqList *L)
{
int i, j, *p, *q;

for (i = 0; i < (*L).length - 1; i++)
{
for (j = i + 1; j < (*L).length; j++)
{
if ((*L).elem[i] == (*L).elem[j])
{
p = &(*L).elem[j];
for (q = p + 1; q < &(*L).elem[(*L).length]; q++)
{
*(q - 1) = *q;
}
(*L).length--;
}
}
}
}

static void VisitList(SqList L)
{
int i;

for (i = 0; i < L.length; i++)
{
printf("%d ", L.elem[i]);
}
printf("\n");
}

static void DestroyList(SqList *L)
{
if ((*L).elem != NULL)
{
free((*L).elem);
(*L).elem = NULL;
}
(*L).length = 0;
}


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-16 11:25
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

2题,恋栈

#include <stdio.h>
#include <stdlib.h>

typedef struct node
{
int data;
struct node *nextPtr;
}*LinkList, Lnode;

static void CreateList(LinkList *headPtr);
static void VisitList(LinkList headPtr);
static void DestroyList(LinkList *headPtr);

int main(void)
{
LinkList headPtr = NULL`;

CreateList(&headPtr); /* 创建恋栈*/

VisitList(headPtr); /* 打印恋栈*/

DestroyList(&headPtr); /* 销毁恋栈 */

return 0;
}

static void CreateList(LinkList *headPtr)
{
LinkList newPtr;
int n, i;

printf("Enter node number n: ");
scanf("%d", &n);

for (i = 0; i < n; i++)
{
if ((newPtr = (LinkList)malloc(sizeof(Lnode))) == NULL)
{
exit(1);
}
scanf("%d", &newPtr -> data);
newPtr -> nextPtr = *headPtr;
*headPtr = newPtr;
}
}

static void VisitList(LinkList headPtr)
{
while (headPtr != NULL)
{
printf("%d -> ", headPtr -> data);
headPtr = headPtr -> nextPtr;
}
printf("NULL\n");
}

static void DestroyList(LinkList *headPtr)
{
LinkList tempPtr;

while (*headPtr != NULL)
{
tempPtr = *headPtr;
*headPtr = (*headPtr) -> nextPtr;
free(tempPtr);
}
*headPtr = NULL;
}


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-16 11:37
cjl206221
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2006-4-4
收藏
得分:0 

谢谢...请问第三题呢??? 麻烦也帮帮忙.. ...感谢大家


程序如衣服,简单,务实就好! Http://www. 我的个人站
2006-05-16 16:10
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
我倒,循环队列我都忘了,还的现看看,晚上吧,写给你,应该挺简单的

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-16 16:15
cjl206221
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2006-4-4
收藏
得分:0 

哈哈,你这样..QQ留下,..大家交流......感觉这里面人都不错哦!!


程序如衣服,简单,务实就好! Http://www. 我的个人站
2006-05-16 16:24
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

循环队列

#include <stdio.h>
#include <stdlib.h>
#define LISTSIZE 100 /* 定义循环队列大小 */

typedef struct
{
int *elem;
int front;
int rear;
}SqList;

static void InitialList(SqList *L);
static void CreateList(SqList *L);
static void VisitList(SqList L);
static void DestroyList(SqList *L);

int main(void)
{
SqList L;

InitialList(&L); /* 初始化队列 */

CreateList(&L); /* 创建队列 */

VisitList(L); /* 打印队列 */

DestroyList(&L); /* 销毁队列 */

return 0;
}

static void InitialList(SqList *L)
{
if (((*L).elem = (int*)malloc(sizeof(int) * LISTSIZE)) == NULL)
{
exit(1);
}
(*L).front = 0;
(*L).rear = 0;
}


static void CreateList(SqList *L)
{
int i, n;

printf("Enter element number n: "); /* n代表元素个数 */
scanf("%d", &n);

for (i = 0; i < n; i++) /* 队列定义为100,所以最多读取99个元素 */
{
if (((*L).rear + 1) % LISTSIZE == (*L).front)
{
exit(1);
}
scanf("%d", &(*L).elem[(*L).rear]);
(*L).rear = ((*L).rear + 1) % LISTSIZE;
}
}

static void VisitList(SqList L)
{
while (L.front!= L.rear)
{
printf("%d ", L.elem[L.front]);
L.front = (L.front + 1) % LISTSIZE;
}
printf("\n\n");
}

static void DestroyList(SqList *L)
{
if ((*L).elem != NULL)
{
free((*L).elem);
(*L).elem = NULL;
}
(*L).front = 0;
(*L).rear = 0;
}

QQ就免了,我们做好事不留名



日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-16 20:08
cjl206221
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2006-4-4
收藏
得分:0 

好样的 ..我喜欢......



谢谢了.......



程序如衣服,简单,务实就好! Http://www. 我的个人站
2006-05-16 22:10
快速回复:[求助]帮朋友提问..因为我不太明白
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018445 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved