哪位高手能给出个模板

xiaoleibps 2020-02-23 11:20:34
这个实验应该怎样做?先写什么后写什么呀?
...全文
117 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoleibps 2020-02-24
  • 打赏
  • 举报
回复
我学的数据结构,大一,应该是用c和c++都可以
寻开心 2020-02-23
  • 打赏
  • 举报
回复
简单的写了一下, 自己测试吧
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 线性表定义,用int数组来实现
typedef struct LineListType { int nMaxSize; int nSize; int *pData; } LineList;

// 创建一个空的线性表
LineList * CreateLineList(void ) {
LineList * pList = (LineList*) malloc( sizeof(LineList));
pList->nMaxSize = 8;
pList->nSize = 0;
pList->pData = (int *) malloc(pList->nMaxSize*sizeof(int));
return pList;
};

// 在线性表后面,一次插入一个数组
void AppendList(LineList* pList, int n, int *v) {
if ( pList==NULL ) return;
if ( pList->nMaxSize - pList->nSize <n ) {
pList->nMaxSize += (n+7)>>3 << 3;
pList->pData = (int*) realloc(pList->pData, pList->nMaxSize*sizeof(int));
}
memcpy(pList->pData+pList->nSize, v, n*sizeof(int));
pList->nSize += n;
};

// 打印输出线性表
void PrintList(LineList * pList) {
for (int i=0; i<pList->nSize; i++)
printf("%d ", pList->pData[i]);
printf("\n");
};

// 在指定的位置插入,有效范围0~nSize, 尾巴上是可以插入的
int InsertList(LineList *pList, int nPos, int v)
{
if (NULL == pList) return 0;
if ( nPos <0 || nPos > pList->nSize ) {
printf("InsertList:Wrong postion\n\007");
return 0;
}
if (pList->nMaxSize < pList->nSize +1 ) {
pList->nMaxSize += 8;
pList->pData = (int*) realloc(pList->pData, pList->nMaxSize*sizeof(int));
};
int t = pList->nSize++;
while ( t>nPos) {
pList->pData[t] = pList->pData[t-1];
--t;
}
pList->pData[t] = v;
return 1;
}

// 删除指定位置为的
// return 0 means falure, return 1 means success
int DeleteAtList(LineList*pList, int nPos) {
if ( NULL == pList )return 0;
if (nPos <0 || nPos >= pList->nSize ) {
printf("DeleteAtList: Wrong Position\n");
return 0;
};
while(nPos<pList->nSize) {
pList->pData[nPos] = pList->pData[nPos+1];
nPos++;
};
--pList->nSize;
return 1;
};

// 排序用的比较函数,给qsort使用
int comp(const void *a, const void *b ) {
return *((int*)a) > *((int*)b);
};
// 线性表排序。 如果愿意,扩展线性表的结构
void SortList(LineList* pList) {
qsort (pList->pData, pList->nSize, sizeof(int), comp);
};

// 对已经排序的线性表做插入
int InsertSortedList(LineList* pList, int v ) {
// 自己写吧
}

int main() {
LineList *pList = CreateLineList();
int init[] = {12, 25,7, 42,19,38};
AppendList(pList, 6, init);
PrintList(pList);
InsertList(pList, 3, 2);
PrintList(pList);
InsertList(pList, 12,4);
DeleteAtList(pList,2);
PrintList(pList);
SortList(pList);
PrintList(pList);
return 0;
}

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧