关于c语言链表函数

C\u8bed\u8a00\u94fe\u8868 \u4e3b\u51fd\u6570

1\u3001\u6dfb\u52a0\u5934\u6587\u4ef6"stdio.h"
2\u3001struct student * creat(void)\uff0c\u4f46\u662f\u4f60\u7684main\u51fd\u6570\u4e2d\u8fd4\u56de\u63a5\u6536\u5374\u662f\u7528\u7684int*\u7c7b\u578b\u3002
3\u3001\u4e3b\u51fd\u6570main\u5e94\u5f53\u660e\u786e\u58f0\u660e\u4e3avoid main()
4\u3001\u6700\u4e3a\u4e25\u91cd\u7684\u662f\uff1astruct student * creat(void) \u51fd\u6570\u4f53\u4e2d\u4f7f\u7528\u4e86\u5c40\u90e8\u53d8\u91cfstruct student *head; struct student *p1,*p2; \u4f46\u662f\u51fd\u6570\u7ed3\u675f\u7684\u5730\u65b9\u5374\u8981\u8fd4\u56de\u8fd9\u4e9b\u6307\u9488\uff0c\u56e0\u6b64\u8fd4\u56de\u7684\u503c\u662f\u65e0\u6548\u6570\u636e\u3002\u8fd4\u56de\u65f6\uff0c\u5df2\u7ecf\u4e0d\u518d\u4f5c\u7528\u57df\u4e86\uff0c\u662f\u65e0\u6548\u7684\u7a7a\u95f4\u3002\u5efa\u8bae\u628a\u8fd9\u4e9b\u6570\u636e\u5f53\u4f5c\u8f93\u5165\u53c2\u6570\uff0c\u6307\u9488\u7c7b\u578b\u7684\u3002\u5c31\u53ef\u4ee5\u6b63\u786e\u7684\u63a5\u6536\u5206\u914d\u7684struct student\u7a7a\u95f4\u4ee5\u53ca\u6307\u9488\u4e86\u3002
5\u3001struct student * creat(void) \u51fd\u6570\u4f53\u4e2d\uff0c\u4e34\u65f6\u6307\u9488*p1\u3001*p2\u518d\u51fd\u6570\u8fd4\u56de\u4e4b\u524d\u5e94\u5f53\u8bbe\u7f6e\u4e3aNULL\uff0c\u907f\u514d\u56e0\u4e3a\u5c40\u90e8\u53d8\u91cf\u7684\u4f5c\u7528\u57df\u7ed3\u675f\u5bfc\u81f4\u76f8\u5173\u7684\u7a7a\u95f4\u88ab\u6e05\u9664\u3002

\u603b\u4e4b\uff0c\u6211\u5efa\u8bae\u628astruct student * creat(void)\u5b9a\u4e49\u4fee\u6539\u4e3a\uff1a
void creat(struct student **head).
\u4ee5\u4e0a\u5185\u5bb9\u7ecf\u8fc7\u8c03\u8bd5\uff0c\u53ef\u4ee5\u4f7f\u7528\u3002
==================\u6211\u7684\u7a0b\u5e8f\uff0c\u7ecf\u8fc7\u5b8c\u6574\u7684\u8c03\u8bd5
#include "stdafx.h"
#include "malloc.h"
#include "stdio.h"
#define NULL 0
#define LEN sizeof(struct student)

struct student
{
long num;
float score;
struct student *next;
};
int n;
void creat(struct student **head) /*\u5b9a\u4e49\u51fd\u6570,\u6b64\u51fd\u6570\u5e26\u56de\u4e00\u4e2a\u6307\u5411\u94fe\u8868\u5934\u7684\u6307\u9488*/
{
struct student *p1,*p2;
n=0;
do
{
p1=(struct student *)malloc(LEN); /*\u5f00\u8f9f\u4e00\u4e2a\u65b0\u5355\u5143*/
p1->next=NULL;
scanf("%ld,%f",&p1->num,&p1->score);
if(p1->num==0)
break;
n++;
if(n==1)
*head=p1;
else
p2->next=p1;
p2=p1;
} while(p1->num!=0) ;
p1=NULL;
p2=NULL;
}

void main()
{
struct student *p;
creat(&p);
if(p!=NULL)
do
{
printf("%ld %5.1f\n",p->num,p->score);
p=p->next;
}while(p!=NULL);
flushall(); //\u6e05\u9664\u952e\u76d8\u7f13\u51b2\u533a\uff0c\u907f\u514d\u8f93\u5165\u6df7\u6dc6
getchar(); //\u7b49\u5f85\u952e\u76d8\u4efb\u610f\u8f93\u5165\uff0c\u4ee5\u4fbf\u89c2\u5bdf\u8fd0\u7b97\u7ed3\u679c
}
\u770b\u6211\u7684\u56de\u7b54\u600e\u4e48\u6837\uff1f

#include#include#include #include #include //\u5b9a\u4e49\u6570\u636e\u7c7b\u578b\u540d\u79f0typedef int DataType;#define flag -1 //\u5b9a\u4e49\u6570\u636e\u8f93\u5165\u7ed3\u675f\u7684\u6807\u5fd7\u6570\u636e//\u5355\u94fe\u8868\u7ed3\u70b9\u5b58\u50a8\u7ed3\u6784\u5b9a\u4e49typedef struct Node{ DataType data; struct Node *next;}LNode ,*LinkList;//\u5efa\u7acb\u5355\u94fe\u8868\u5b50\u51fd\u6570 LNode *Create_LinkList(){ LNode *s,*head,*L;int i=0,x; //\u5b9a\u4e49\u6307\u5411\u5f53\u524d\u63d2\u5165\u5143\u7d20\u7684\u6307\u9488 while(1) { scanf("%d",&x); if(-1==x) { return head; break;} s= (LNode *)malloc(sizeof(LNode)); //\u4e3a\u5f53\u524d\u63d2\u5165\u5143\u7d20\u7684\u6307\u9488\u5206\u914d\u5730\u5740\u7a7a\u95f4 s->data =x; s->next =NULL; i++; if(i==1) head=s; else L->next =s; L=s; }}//\u67e5\u627e\u5b50\u51fd\u6570\uff08\u6309\u5e8f\u53f7\u67e5\u627e\uff09LNode *Get_LinkList(LinkList L,int i){ LNode *p; int j; //j\u662f\u8ba1\u6570\u5668\uff0c\u7528\u6765\u5224\u65ad\u5f53\u524d\u7684\u7ed3\u70b9\u662f\u5426\u662f\u7b2ci\u4e2a\u7ed3\u70b9 p=L; j=1; while(p!=NULL&&jnext ; //\u5f53\u524d\u7ed3\u70b9p\u4e0d\u662f\u7b2ci\u4e2a\u4e14p\u975e\u7a7a\uff0c\u5219p\u79fb\u5411\u4e0b\u4e00\u4e2a\u7ed3\u70b9 j++; } return p;}//\u63d2\u5165\u8fd0\u7b97\u5b50\u51fd\u6570void Insert_LinkList(LinkList L,int i,DataType x) //\u5728\u5355\u94fe\u8868L\u4e2d\u7b2ci\u4e2a\u4f4d\u7f6e\u63d2\u5165\u503c\u4e3ax\u7684\u65b0\u7ed3\u70b9{ LNode *p,*s; p =Get_LinkList(L,i); //\u5bfb\u627e\u94fe\u8868\u7684\u7b2ci-1\u4e2a\u4f4d\u7f6e\u7ed3\u70b9 if(p==NULL) { printf("\u63d2\u5165\u4f4d\u7f6e\u4e0d\u5408\u6cd5\uff01"); exit(-1); } else { s= (LinkList)malloc(sizeof(LNode)); //\u4e3a\u5f53\u524d\u63d2\u5165\u5143\u7d20\u7684\u6307\u9488\u5206\u914d\u5730\u5740\u7a7a\u95f4 s->data =x; s->next =p->next ; p->next =s; }}//\u5355\u94fe\u8868\u7684\u5220\u9664\u8fd0\u7b97\u5b50\u51fd\u6570void Delete_LinkList(LinkList L,int i) //\u5220\u9664\u5355\u94fe\u8868\u4e0a\u7684\u7b2ci\u4e2a\u7ed3\u70b9{ LNode *p,*q; p=Get_LinkList(L,i-1); //\u5bfb\u627e\u94fe\u8868\u7684\u7b2ci-1\u4e2a\u4f4d\u7f6e\u7ed3\u70b9 if(p==NULL) { printf("\u5220\u9664\u7684\u4f4d\u7f6e\u4e0d\u5408\u6cd5\uff01"); //\u7b2ci\u4e2a\u7ed3\u70b9\u7684\u524d\u9a71\u7ed3\u70b9\u4e0d\u5b58\u5728\uff0c\u4e0d\u80fd\u6267\u884c\u5220\u9664\u64cd\u4f5c exit(-1); } else { if(p->next ==NULL) { printf("\u5220\u9664\u7684\u4f4d\u7f6e\u4e0d\u5408\u6cd5\uff01"); //\u7b2ci\u4e2a\u7ed3\u70b9\u4e0d\u5b58\u5728\uff0c\u4e0d\u80fd\u6267\u884c\u5220\u9664\u64cd\u4f5c exit(-1); } else { q=p->next ; p->next =p->next->next; free(q); } }}//\u6c42\u8868\u957f\u8fd0\u7b97\u5b50\u51fd\u6570int Length_LinkList(LinkList L){ int l; //l\u8bb0\u5f55L\u7684\u8868\u957f LNode *p; p=L; l=1; while(p->next) { p=p->next; l++; } return l;}int main (){ LNode *head,*p; head=(LinkList)malloc(sizeof(LNode)); int x,y; a: printf("*******menu*******\n"); printf("**\u521b\u5efa**********1*\n"); printf("**\u63d2\u5165**********2*\n"); printf("**\u5220\u9664**********3*\n"); printf("**\u8868\u957f**********4*\n"); printf("**\u6e05\u5c4f**********5*\n"); printf("**\u6253\u5370**********6*\n"); printf("**\u9000\u51fa******other*\n"); printf("******************\n"); int i=1; while(i) { printf("\u8bf7\u8f93\u5165\u9009\u9879\uff1a"); scanf("%d",&i); switch(i) { case 1:head=Create_LinkList(); getchar();break; case 2:printf("\u8bf7\u8f93\u5165\u4f4d\u7f6e\u548c\u6570\u636e\uff1b"); scanf("%d%d",&x,&y); Insert_LinkList(head,x,y);break; case 3:printf("\u8bf7\u8f93\u5165\u4f4d\u7f6e\uff1b"); scanf("%d",&x); Delete_LinkList(head,x);break; case 4:printf("%d",Length_LinkList(head));break; case 5:system("cls");goto a; case 6:p=head; while(p!=NULL) {printf("%d\n",p->data); p=p->next;} break; default :i=0; } }}
\u6211\u628a\u521b\u5efa\u7ed9\u6539\u4e86\u4e00\u4e0b

#include<stdio.h>#include<windows.h>#include <stdio.h>#include <malloc.h>#include <stdlib.h>//定义数据类型名称typedef int DataType;#define flag -1 //定义数据输入结束的标志数据//单链表结点存储结构定义typedef struct Node{ DataType data; struct Node *next;}LNode ,*LinkList;//建立单链表子函数 LNode *Create_LinkList(){ LNode *s,*head,*L;int i=0,x; //定义指向当前插入元素的指针 while(1) { scanf("%d",&x); if(-1==x) { return head; break;} s= (LNode *)malloc(sizeof(LNode)); //为当前插入元素的指针分配地址空间 s->data =x; s->next =NULL; i++; if(i==1) head=s; else L->next =s; L=s; }}//查找子函数(按序号查找)LNode *Get_LinkList(LinkList L,int i){ LNode *p; int j; //j是计数器,用来判断当前的结点是否是第i个结点 p=L; j=1; while(p!=NULL&&j<i) { p=p->next ; //当前结点p不是第i个且p非空,则p移向下一个结点 j++; } return p;}//插入运算子函数void Insert_LinkList(LinkList L,int i,DataType x) //在单链表L中第i个位置插入值为x的新结点{ LNode *p,*s; p =Get_LinkList(L,i); //寻找链表的第i-1个位置结点 if(p==NULL) { printf("插入位置不合法!"); exit(-1); } else { s= (LinkList)malloc(sizeof(LNode)); //为当前插入元素的指针分配地址空间 s->data =x; s->next =p->next ; p->next =s; }}//单链表的删除运算子函数void Delete_LinkList(LinkList L,int i) //删除单链表上的第i个结点{ LNode *p,*q; p=Get_LinkList(L,i-1); //寻找链表的第i-1个位置结点 if(p==NULL) { printf("删除的位置不合法!"); //第i个结点的前驱结点不存在,不能执行删除操作 exit(-1); } else { if(p->next ==NULL) { printf("删除的位置不合法!"); //第i个结点不存在,不能执行删除操作 exit(-1); } else { q=p->next ; p->next =p->next->next; free(q); } }}//求表长运算子函数int Length_LinkList(LinkList L){ int l; //l记录L的表长 LNode *p; p=L; l=1; while(p->next) { p=p->next; l++; } return l;}int main (){ LNode *head,*p; head=(LinkList)malloc(sizeof(LNode)); int x,y; a: printf("*******menu*******\n"); printf("**创建**********1*\n"); printf("**插入**********2*\n"); printf("**删除**********3*\n"); printf("**表长**********4*\n"); printf("**清屏**********5*\n"); printf("**打印**********6*\n"); printf("**退出******other*\n"); printf("******************\n"); int i=1; while(i) { printf("请输入选项:"); scanf("%d",&i); switch(i) { case 1:head=Create_LinkList(); getchar();break; case 2:printf("请输入位置和数据;"); scanf("%d%d",&x,&y); Insert_LinkList(head,x,y);break; case 3:printf("请输入位置;"); scanf("%d",&x); Delete_LinkList(head,x);break; case 4:printf("%d",Length_LinkList(head));break; case 5:system("cls");goto a; case 6:p=head; while(p!=NULL) {printf("%d\n",p->data); p=p->next;} break; default :i=0; } }}
我把创建给改了一下

for(i=1;i<a;1++) 中的1++应是 i++。

#include<stdio.h>
#include<stdlib.h>
#define NULL 0

struct stud{
char name[40];
struct stud *next;
};
struct stud *create(int a)
{
int i;
struct stud *h,*p1,*p2;
if((h=(struct stud *)malloc(sizeof(struct stud)))==0)
exit(1);
scanf("%s",h->name);
h->next=0;
p1=h;
for(i=1;i<a;i++)
{
if((p2=(struct stud *)malloc(sizeof(struct stud)))==0)
exit(1);
scanf("%s",p2->name);
p1->next=p2;
p2->next=0;
p1=p2;
}
return h;
}
void output(struct stud *h)
{
struct stud *p;
p=h;
do{
printf("%s\n",p->name);
}while(p->next=0);
printf("%s",p->name);
}
void main()
{
struct stud *h;
int a;
printf("put in namber");
scanf("%d",&a);
h=create(a);
output(h);
system("pause");
}

  • C璇█閾捐〃鐨勪娇鐢ㄦ柟娉
    绛旓細涓嬮潰鐨勭▼搴忔槸鍗閾捐〃鐨勫缓绔嬩笌杈撳嚭锛岄兘鏈夎缁嗙殑娉ㄩ噴锛岀浉淇′綘鑳界湅鐨勬噦 浣嗚鎯冲涔犻摼琛ㄥ繀椤诲緱鎺屾彙浜嗕竴瀹氱殑C璇█鍩虹 涓嬮潰杩欎釜閾捐〃鐨勪綔鐢ㄦ槸寤虹珛5涓粨鐐圭殑鍗曢摼琛紝5涓粨鐐圭殑鍊艰緭鍏ヤ互鍚庯紝渚濇杈撳嚭鍚勪釜缁撶偣鐨勫 include<stdio.h> include<stdlib.h> //閾捐〃鐨勫缓绔嬩笌杈撳嚭 struct node//瀹氫箟缁撶偣鐨勭被鍨 { int ...
  • 涓轰粈涔閾捐〃C璇█main鍑芥暟閲岄潰鍔犲叆for寰幆鍗村湪绗簩娆¤緭鍏ョ殑鏃跺欎細鍋滄杩...
    绛旓細杩欎釜绋嬪簭涓嶄細鍋滄杩愯锛屽彧浼氱瓑寰呰緭鍏ワ紝浣犵户缁緭鍏ュ氨鍙互浜嗭紱鍙互鍦╯canf涔嬪悗浠锋牸鎵撳嵃鎶婅緭鍏ョ殑鍐呭鍙栧嚭鏉ュ氨鐭ラ亾浜嗐傚熀鏈笂閮芥槸鐢变簬缁堢杈撳叆鐨勫洖杞︿箣绫诲共鎵扮殑scanf鐨勭粨鏋溿
  • C璇█閲岄潰鍏充簬閾捐〃鐨勪竴涓鍑芥暟
    绛旓細鍗閾捐〃鐨勬彃鍏ュ憖 for鐨勬剰鎬濇槸鍏堝垱寤轰竴涓┖鑺傜偣锛宲鎸囧悜瀹冿紝鐒跺悗浣犺緭鍏ヤ竴涓厓绱狅紝鎶婅繖涓厓绱犳斁鍒拌繖涓妭鐐圭殑info鍩燂紝鍗硈canf锛堚%c鈥濓紝&p->info锛夛紝杩欏彞搴旇鍦╬rintf鍚庨潰锛屼綘鎺変簡 鐒跺悗鎶婅繖涓猵璧嬪肩粰q鐨刵ext鍩燂紝搴旇鏄痲->next=p;浣犲啓閿欎簡锛屽嵆澶磋妭鐐规寚鍚戜笅涓涓妭鐐逛簡 涔嬪悗q=p;鏄q鎸囧悜杩欎釜鏂拌妭鐐...
  • 鍏充簬c璇█閾捐〃?
    绛旓細鍥犱负浣犲彧鍒涘缓浜嗕竴涓晩锛屼綘鐨勬湰鎰忔槸鐢╟reate鍑芥暟鎵ц鍒涘缓閾捐〃鐨勫伐浣滐紝涓嶇澶氬皯涓兘鏄敱瀹冨畬鎴愮殑锛屼絾鏄綘鐨刢reate鍑芥暟鏄庢槑娌℃湁while寰幆鎴栬卍o while寰幆鍟婏紝鍙仛浜嗕竴閬嶅晩锛岀涓閬嶇殑if鍋氬畬浜嗭紝绗竴涓摼琛ㄥ畬鎴愪簡锛屽啀娆canf浜嗕箣鍚庯紝灏遍鍑烘潵浜嗗晩锛屽湪浣犲垱寤轰簡涓涓摼琛ㄤ箣鍚庯紝灏卞湪閭d釜閾捐〃鐨勫熬閮ㄥ啓鍏ULL浜嗭紝...
  • 姹備竴涓C璇█鍗閾捐〃鐨勬帓搴鍑芥暟,寰堟ュ緢鎬
    绛旓細鐢ㄩ夋嫨鎺掑簭灏辫锛屼唬鐮佸涓嬨閾捐〃缁撴瀯濡備笅锛歵ypedef struct Node { T value;struct Node *link;}Node;void selectSort(Node *node){ Node *cur; /*褰撳墠鑺傜偣*/ Node *next; /*閬嶅巻鏈帓搴忚妭鐐*/ Node *min; /*鎸囧悜鏈帓搴忚妭鐐逛腑鏈灏忚妭鐐*/ T temp;/*浠庡ご鑺傜偣鐨勪笅涓涓妭鐐瑰紑濮嬶紝涓鐩村埌鍊掓暟绗簩...
  • C璇█clear鍑芥暟瀹炵幇瀵閾捐〃鐨勬竻绌烘搷浣滄庝箞鍐欏晩
    绛旓細閾捐〃鐨勬竻绌烘搷浣滐紝灏辨槸瑕侀攢姣佹帀闄よ〃澶寸粨鐐逛箣澶栫殑鎵鏈夌粨鐐广傚彧瑕佸啓涓惊鐜潵閿姣佺粨鐐瑰氨鍙互锛屾敞鎰忥紝瑕佸厛璁板綍褰撳墠缁撶偣鐨勫悗缁х粨鐐癸紝鐒跺悗鍐嶉攢姣佸綋鍓嶇粨鐐广傚弬鑰冧唬鐮侊細define OK 1#define ERROR 0typedef int ElemType;typedef struct SqList{ ElemType elem; struct SqList *next;}SqList;int ClearList(Sq...
  • c璇█缂栧啓涓涓缓绔嬪鐢閾捐〃鐨鍑芥暟creat( )銆
    绛旓細include <stdio.h> include <malloc.h> include <string.h> define N 5 typedef struct node { char number[10];int data;struct node *next;}node;node * create(){ node *p,*s,*h; char number[10];int j=1,x;p=s=h=(node*)malloc(sizeof(node));h->next=NULL;printf("please...
  • C璇█鏈夊叧閾捐〃鐨勯棶棰
    绛旓細// 鑰宻鏄竴涓浐瀹氱殑瀛楃鏁扮粍, 鍦╩ain鍑芥暟涓紝姣忔缁檚[0]铏界劧璧嬩簡涓嶅悓鐨勫硷紝 // 浣嗗叾瀹炴槸鎶婁互鍓嶅瓨鍦ㄩ噷闈㈢殑鏁板瓧缁欒鐩栨帀浜嗭紝 // 鎵浠ュ彧鑳界湅鍒版瘡娆℃渶鍚庤祴鍊艰繘鍘荤殑瀛楁瘝, // 涔熷氨鏄綘鎵鐪嬪埌鐨勬儏鍐典簡 #include <stdlib.h>#include <ctype.h>typedef struct date{ char *a; struct date *n...
  • 璇烽棶杩欎釜閾捐〃涓鍑芥暟鎬庝箞鍐?(鐢C璇█,鍙互浠庨敭鐩樿緭鍏涓暟瀹炵幇)_鐧惧害鐭 ...
    绛旓細//璁块棶鍒扮粨灏捐繑鍥 del(p->next);//濡傛灉娌¤闂埌缁撳熬锛屼細鍦ㄨ繖閲屼竴鐩磋皟鐢鍑芥暟鏈韩閫掑綊锛岀洿鍒伴亣瑙丯ULL delete p;//閬囧埌NULL杩斿洖鍒癶ead鐨勬椂鍊欙紝浠庡悗鍚戝墠鍒犻櫎鑺傜偣锛岄噴鏀惧唴瀛 //濡傛灉浠庡墠闈㈠垹闄ょ殑璇濆氨浼氭妸鏈妭鐐圭殑next鍊间篃缁欏垹闄や簡锛屽氨娌″姙娉曡闂埌涓嬩竴涓妭鐐逛簡 //濡傛灉瀹氫箟涓涓复鏃跺彉閲忓厛璁板綍...
  • 鍏充簬C璇█閾捐〃鐨勯棶棰
    绛旓細浣爃ead涔熷ソp涔熷ソ閮藉彧鏄畾涔変簡涓涓寚閽堬紝娌℃湁鎸囧悜鍦板潃銆備綘鐩存帴璋冪敤->鎴愬憳,褰撶劧鍑洪敊浜嗐傛瘮濡俬ead,浣犺涔堝畾涔変竴涓粨鏋勫彉閲忥紝璁╁畠鎸囧悜銆傝涔堜娇鐢╩alloc鐢宠鍐呭瓨绌洪棿銆俬ead=(Node *)malloc(sizeof(Node));
  • 扩展阅读:c++编程适合几岁学 ... c语言自动生成器 ... 大一c语言链表题目 ... c语言搜题神器app ... c语言链表代码 ... c语言链表怎么写 ... 函数公式一览表 ... c语言链表的增删改查 ... 创建一个简单的链表c语言 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网