Status ListInsert_Sq(SqList &L,int i,int e){//i是在线性表中的位置编号,i从1开始
if(i<1||i>L.length+1)return ERROR;
if(L.length>=L.listsize){
newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCSEMENT)*sizeoff(ElemType)); //追加分配存储空间
if(!newbase) exit(OVERFLOW);
L.elem = newbase; //新基址
L.listsize += LISTINCREMENT;// 更新表的存储空间长度
}
q = &(L.elem[i-1]); //q为插入位置指针,数组中下标从0开始
for(p = &(L.elem[L.length - 1]); p >=q; --p) //下标形式实现for(j = L.length-1, j >= i , j--)
*(p+1) = *p //移动数据元素 L[j + 1] = L[j]
*q = e; //插入元素
++ L.length;
return OK
如何把伪代码改写成源代码?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
关注 这是链表
#define overflow -1 #define ok 1 #define error 0 #include <stdio.h> #include <stdlib.h> #include <malloc.h> typedef int status; typedef int elemtype; typedef struct lnode { elemtype data; struct lnode *next; } lnode, *linklist; status creatlink(linklist &L, int n, elemtype *e) //从表头插入 { int i; linklist p; L = (linklist)malloc(sizeof(lnode)); if (!L) return error; L->next = NULL; for (i = n - 1; i >= 0; --i) { if (!(p = (linklist)malloc(sizeof(lnode)))) return error; p->data = e[i]; p->next = L->next; L->next = p; } return ok; } void printlink(linklist L) { linklist p = L->next; while (p) { printf("%d->", p->data); p = p->next; } printf("end\n"); } status insertlink(linklist &L, int i, elemtype e) { linklist s, p = L; int k = 0; while (p->next != NULL && k < i - 1) { p = p->next; ++k; } if (!p->next || k > i - 1) return error; if (!(s = (linklist)malloc(sizeof(lnode)))) return overflow; s->data = e; s->next = p->next; p->next = s; return ok; } status dellink(linklist L, int i, elemtype &e) { int k; linklist q, p = L; while (p->next != NULL && k < i - 1) { p = p->next; k++; } if (!p->next || k > i - 1) return error; q = p->next; p->next = q->next; e = q->data; free(q); return ok; } void freelink(linklist &L) { linklist p, q; p = L; while (p != NULL) { p = L->next; q = p->next; free(q); } L = NULL; } int main() { elemtype e[] = {1, 22, 339, 44, 55, 66, 332, 188, 2333}; int i, n = 9; linklist head; elemtype rc; if (!creatlink(head, n, e)) //创建链表 return error; printlink(head); // printf("index value-->"); // scanf("%d%d", &i, &rc); i = 2, rc = 9999; if (!insertlink(head, i, rc)) //插入 return error; printlink(head); // printf("index value-->"); // scanf("%d%d", &i, &rc); i = 2, rc = 9999; if (!dellink(head, i, rc)) //删除 return error; printlink(head); freelink(head); //释放链表 if (head) printf("xiaoxiaoran"); }
这是顺序表
#define overflow -1 #define ok 1 #define error 0 #define maxsize 16 #define increment 10 #include <stdio.h> #include <stdlib.h> #include <malloc.h> typedef int status; typedef int elemtype; typedef struct { elemtype *elem; int length; int listsize; } sqlist; status initlist(sqlist &L) { L.elem = (elemtype *)malloc(maxsize * sizeof(elemtype)); if (!L.elem) exit(overflow); L.length = 0; L.listsize = maxsize; return ok; } status insertlist(sqlist &L, int i, elemtype e) { if (i < 1 || i > L.length) return error; elemtype *p; int j; if (L.length >= L.listsize) { p = (elemtype *)realloc(L.elem, (L.listsize + increment) * sizeof(elemtype)); if (!p) exit(overflow); L.elem = p; L.listsize += increment; } for (j = L.length - 1; j >= i - 1; --j) L.elem[j + 1] = L.elem[j]; L.elem[j + 1] = e; L.length++; return ok; } void printlist(sqlist L) { int i; for (i = 0; i < L.length; i++) printf("%d ", L.elem[i]); printf("\n"); } status dellist(sqlist &L, int i, elemtype &e) { int j; if (i < 1 || i > L.length) return error; e = L.elem[i - 1]; for (j = i; j < L.length; j++) L.elem[j - 1] = L.elem[j]; --L.length; return ok; } int main() { sqlist LL; elemtype x; int r, i; if (!initlist(LL)) //初始化 return error; for (i = 0; i < 10; i++) LL.elem[i] = i * 8; LL.length += 10; //printf("value index-->"); //插入 //scanf("%d %d", &x, &r); x = 188, r = 3; insertlist(LL, r, x); printlist(LL); //printf("index-->"); //删除 //scanf("%d", &r); dellist(LL, r, x); printlist(LL); printf("xiaoxiaoran"); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
- ¥20 Python安装cvxpy库出问题
- ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
- ¥15 python天天向上类似问题,但没有清零
- ¥30 3天&7天&&15天&销量如何统计同一行
- ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
- ¥15 C#调用python代码(python带有库)
- ¥15 活动选择题。最多可以参加几个项目?
- ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
- ¥15 vs2019中数据导出问题