有一道比较难的C语言,有大神会吗?

 我来答
农业百科老赵

2020-12-16 · TA获得超过834个赞
知道小有建树答主
回答量:1134
采纳率:85%
帮助的人:78.8万
展开全部

#include<stdio.h> 

#include<stdlib.h> 

#include<string.h>

#define OK 1

#define ERROR 0


typedef int Status; 


typedef struct LNode

int data;

char name[100]; 

LNode *next; 

}LNode,*LinkList; 


void CreateList_L(LinkList &L, int n)      

{

int i; 

LinkList p; 

L = (LinkList)malloc(sizeof(LNode));  

L->next = NULL; 

printf("逆序输入 n 个数据元素,学号和姓名,建立带头结点的单链表\n"); 

for (i = n; i > 0; --i) 

{

p=(LinkList)malloc(sizeof(LNode)); 

scanf("%d",&(p->data));

scanf("%s",p->name); 

p->next = L->next;

L->next = p; 

p=L->next;

int ListInsert_L(LinkList L, int i, int e,char *c)       

{

int j; 

LinkList p,s; 

p = L; j = 0; 

while (p && j < i-1) 

p = p->next; 

++j;

}

if (!p || j > i-1) 

return ERROR;

s = (LinkList)malloc(sizeof(LNode)); 

if ( s == NULL) 

return ERROR; 

s->data = e; 

strcpy(s->name,c);

s->next = p->next; p->next = s; 

p=L->next;

return OK;  

int ListDelete_L(LinkList L, int i )   

{

LinkList p,q; 

int j; 

p = L; 

j = 0; 

while (p->next && j < i-1) 

{

p = p->next; 

++j; 

if (!(p->next) || j > i-1) 

return ERROR; 

q = p->next; p->next = q->next; 

free(q); 

p=L->next;

return OK; 


void travser(LinkList L)      

{

printf("表为:\n");

LinkList p;

p=L->next;

while (p)

{

printf("%d %s\n",p->data,p->name);

p=p->next;

}


}


int main() 

{

LinkList L; 

int n,i; 

int e; 

printf("输入链表中元素的个数:"); 

scanf("%d",&n); 

CreateList_L(L, n); 

travser(L);

printf("\n输入插入元素的位置和插入元素的值学号和姓名:"); 

char ns[100]; 

scanf("%d%d%s",&i,&e,ns);

ListInsert_L(L, i,e,ns);

travser(L);

printf("\n输入删除元素的位置:"); 

scanf("%d",&i);

ListDelete_L(L, i);

travser(L);

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式